首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python的argparse:如何使用关键字作为参数的名称

Python的argparse:如何使用关键字作为参数的名称
EN

Stack Overflow用户
提问于 2014-08-04 20:17:52
回答 2查看 3K关注 0票数 11

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-related。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-04 20:23:44

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

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
票数 26
EN

Stack Overflow用户

发布于 2014-08-04 22:12:43

如果长选项名称不是参数所需的属性名称,则argparse为参数提供目标功能。

例如:

parser = argparse.ArgumentParser()
parser.add_argument("--lambda", dest="function")

args = parser.parse_args()

print(args.function)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25118520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档