Python 3.x 在命令行中以参数形式传递函数名及其多个参数
我有3个函数来计算第n个斐波那契数。我想从命令行调用传递多个参数的函数 输入:python3 a1.py纤维5 10 15 20 样本输出:5:5 10:55 15:61 20:6765 我尝试了以下代码:Python 3.x 在命令行中以参数形式传递函数名及其多个参数,python-3.x,command-line-arguments,Python 3.x,Command Line Arguments,我有3个函数来计算第n个斐波那契数。我想从命令行调用传递多个参数的函数 输入:python3 a1.py纤维5 10 15 20 样本输出:5:5 10:55 15:61 20:6765 我尝试了以下代码: if __name__ == "__main__": if sys.argv[1] == 'fibf' for i in range(2, len(sys.argv)): print (sys.argv[i], ':', f
if __name__ == "__main__":
if sys.argv[1] == 'fibf'
for i in range(2, len(sys.argv)):
print (sys.argv[i], ':', fibf(sys.argv[i]))
if sys.argv[1] == 'fibi'
for i in range(2, len(sys.argv)):
print (sys.argv[i], ':', fibi(sys.argv[i]))
if sys.argv[1] == 'fibr'
for i in range(2, len(sys.argv)):
print (sys.argv[i], ':', fibr(sys.argv[i]))
这里有两个问题。第一种是按名称调用函数。第二是准备其论点。要按名称调用本地函数,请通过本地标识符字典查找对该函数的引用:
locals()[argv[1]](*argv[2:])
但是,sys.argv
由字符串组成,函数需要数字。字符串应转换为数字:
locals()[argv[1]](*map(int, argv[2:]))
到目前为止,一切顺利。但是,如果某些参数必须是数字,而某些参数必须是字符串,则情况会变得更加复杂。希望你的问题不会那么严重