gpt4 book ai didi

python - 如何使用 Python 关键字作为 argparse 的参数名称?

转载 作者:太空狗 更新时间:2023-10-29 20:35:56 24 4
gpt4 key购买 nike

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

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

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

您可能会问我为什么不使用其他名称。这是因为我想使用 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!

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

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

因此,我想保留 lambda 作为变量名。解决方案也可能与 argparse 相关。

最佳答案

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

print getattr(args, 'lambda')

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

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

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

print args.lambda_

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

>>> 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 - 如何使用 Python 关键字作为 argparse 的参数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25118520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com