【发布时间】:2022-01-17 04:46:52
【问题描述】:
我正在尝试通过 argparse 将多个参数用于函数中 我希望将参数放在下面的函数中
def toto(var1,var2,var3):
print(var1,var2,var3)
这是我的参数解析
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--names', type=str,nargs=1, help='<Required> Set flag')
args = parser.parse_args()
问题是我需要三个参数。
我把函数放在像hello.py这样的文件中
if __name__ == "__main__":
print(args)
if args.names:
toto(var1,var2,var3)
然后我运行命令
python hello.py --names 'bobo'
我有这个错误
Traceback (most recent call last):
File "hello.py", line 15, in <module>
toto(var1,var2,var3)
NameError: names 'var1' is not defined
发生了什么?如何添加三个参数而不是一个?
谢谢
【问题讨论】:
-
在您的代码中添加
print(args)。我希望看到Namespace(name=['bobo'])。您定义了参数,并指定了nargs=1。所以args.name将是['bobo']。我看不出您希望从哪里获得var1等。 -
@hpaulj 完成。查看更新的代码。
-
似乎 (a) 语法错误,因为您的
var1之类的变量都没有被分配/定义,(b) 参数的数量被限制为nargs=1而不是想要3,( c) 解析的参数arg.name从未传递给您的函数toto(甚至没有传递)。