Python 的 argparse:如何使用关键字作为参数的名称 [英] Python's argparse: How to use keyword as argument's name

查看:20
本文介绍了Python 的 argparse:如何使用关键字作为参数的名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

lambda 在 Python 中有一个关键字函数:

f = lambda x: x**2 + 2*x - 5

如果我想用它作为变量名怎么办?是否有转义序列或其他方式?

你可能会问我为什么不使用另一个名字.这是因为我想使用 argparse:

parser = argparse.ArgumentParser("用通常称为 lambda 的数量计算一些东西.")parser.add_argument("-l","--lambda",help="定义名为 lambda 的数量", type=float)args = parser.parse_args()print args.lambda # 语法错误!

使用 --help 选项调用的脚本给出:

<代码>...可选参数-h, --help 显示此帮助信息并退出-l LAMBDA, --lambda LAMBDA定义称为 lambda 的数量

因此,我想使用 lambda 作为变量名.解决方案也可能与 argparse 相关.

解决方案

您仍然可以使用动态属性访问来访问该特定属性:

print getattr(args, 'lambda')

更好的是,告诉 argparse 使用不同的属性名称:

parser.add_argument("-l", "--lambda",help="定义称为 lambda 的数量",type=float, dest='lambda_', metavar='LAMBDA')

这里 dest 参数告诉argparse 使用 lambda_ 作为属性名称:

打印 args.lambda_

当然,帮助文本仍会将参数显示为--lambda;我明确设置了 metavar,否则它会使用大写的 dest(所以使用下划线):

<预><代码>>>>导入参数解析>>>parser = argparse.ArgumentParser("用通常称为 lambda 的数量计算一些东西.")>>>parser.add_argument("-l", "--lambda",... help="定义称为 lambda 的数量",... type=float, dest='lambda_', metavar='LAMBDA')_StoreAction(option_strings=['-l', '--lambda'], dest='lambda_', nargs=None, const=None, default=None, type=, selection=None,help='定义称为 lambda' 的数量,metavar='LAMBDA')>>>parser.print_help()用法:用通常称为 lambda 的数量计算某物.[-h] [-l LAMBDA]可选参数:-h, --help 显示此帮助信息并退出-l LAMBDA, --lambda LAMBDA定义称为 lambda 的数量>>>args = parser.parse_args(['--lambda', '4.2'])>>>args.lambda_4.2

lambda has a keyword function in Python:

f = lambda x: x**2 + 2*x - 5

What if I want to use it as a variable name? Is there an escape sequence or another way?

You may ask why I don't use another name. This is because I'd like to use argparse:

parser = argparse.ArgumentParser("Calculate something with a quantity commonly called lambda.")
parser.add_argument("-l","--lambda",help="Defines the quantity called lambda", type=float)
args = parser.parse_args()

print args.lambda # syntax error!

Script called with --help option gives:

...
optional arguments
  -h, --help            show this help message and exit
  -l LAMBDA, --lambda LAMBDA
                        Defines the quantity called lambda

Because of that, I would like to stay with lambda as the variable name. Solutions may be argparse-related as well.

解决方案

You can use dynamic attribute access to access that specific attribute still:

print getattr(args, 'lambda')

Better still, tell argparse to use a different attribute name:

parser.add_argument("-l", "--lambda",
    help="Defines the quantity called lambda",
    type=float, dest='lambda_', metavar='LAMBDA')

Here the dest argument tells argparse to use lambda_ as the attribute name:

print args.lambda_

The help text still will show the argument as --lambda, of course; I set metavar explicitly as it otherwise would use dest in uppercase (so with the underscore):

>>> import argparse
>>> parser = argparse.ArgumentParser("Calculate something with a quantity commonly called lambda.")
>>> parser.add_argument("-l", "--lambda",
...     help="Defines the quantity called lambda",
...     type=float, dest='lambda_', metavar='LAMBDA')
_StoreAction(option_strings=['-l', '--lambda'], dest='lambda_', nargs=None, const=None, default=None, type=<type 'float'>, choices=None, help='Defines the quantity called lambda', metavar='LAMBDA')
>>> parser.print_help()
usage: Calculate something with a quantity commonly called lambda.
       [-h] [-l LAMBDA]

optional arguments:
  -h, --help            show this help message and exit
  -l LAMBDA, --lambda LAMBDA
                        Defines the quantity called lambda
>>> args = parser.parse_args(['--lambda', '4.2'])
>>> args.lambda_
4.2

这篇关于Python 的 argparse:如何使用关键字作为参数的名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆