我有许多可能的参数需要从argparse传递给一个函数。如果变量没有被设置,我希望该方法使用其默认变量。然而,处理哪些参数已经设置和哪些没有设置是很繁琐的:
import argparse
def my_func(a = 1, b = 2):
return a+b
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Get the numeric values.')
parser.add_argument('-a', type=int)
parser.add_argument('-b', type=int)
args = parser.parse_args()
if not args.a is None and not args.b is None:
result = my_func(a = args.a, b = args.b)
elif not args.a is None and args.b is None:
result = my_func(a = args.a)
elif not args.b is None and args.a is None:
result = my_func(b = args.b)
else:
result = my_func()
看来我应该能做到这样:
result = my_func(a = args.a if not args.a is None, b = args.b if not args.b is None)
但是在逗号处会出现语法错误。
我可以在argparser中设置默认值,但我想使用在方法定义中设置的默认值。
else
,则表达式中只能使用if
。f(a if b)
- 不好。f(a if b else c)
- 好。 - Kevin