Python 的 argparse:如何使用关键字作为参数的名称 [英] Python's argparse: How to use keyword as argument's name
问题描述
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
(所以使用下划线):
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屋!