Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在命令行中以参数形式传递函数名及其多个参数_Python 3.x_Command Line Arguments - Fatal编程技术网

Python 3.x 在命令行中以参数形式传递函数名及其多个参数

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

我有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], ':', 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:]))
到目前为止,一切顺利。但是,如果某些参数必须是数字,而某些参数必须是字符串,则情况会变得更加复杂。希望你的问题不会那么严重