【问题标题】:Passing function name as an argument with its multiple argument in command line在命令行中将函数名称作为参数及其多个参数传递
【发布时间】:2020-12-30 12:28:23
【问题描述】:

我有 3 个函数来计算第 N 个斐波那契数。我想从命令行调用一个函数,传递多个参数。

输入:python3 a1.py fibr 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]))

【问题讨论】:

    标签: python-3.x command-line-arguments


    【解决方案1】:

    这里有两个问题。第一种是按名称调用函数。二是准备论据。要按名称调用 local 函数,请通过本地标识符字典查找对该函数的引用:

    locals()[argv[1]](*argv[2:])
    

    但是,sys.argv 由字符串组成,您的函数需要数字。字符串应转换为数字:

    locals()[argv[1]](*map(int, argv[2:]))
    

    到目前为止,一切都很好。但是,如果某些参数必须是数字,而某些参数必须是字符串,则情况会变得更加复杂。希望您的问题没有那么严重。

    【讨论】:

      猜你喜欢
      • 2015-04-11
      • 1970-01-01
      • 2019-07-13
      • 2014-06-04
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      相关资源
      最近更新 更多