Python 3.x 如何在python中将变量和方法作为命令行参数传递

Python 3.x 如何在python中将变量和方法作为命令行参数传递,python-3.x,Python 3.x,我有一个设想。我必须将参数值传递给脚本中的方法和要执行的方法 例如: 文件名app.py value1 = sys.argv[1] value2 = sys.argv[2] def method1(): print(value1) def method2(): print(value2) 我正在尝试执行的命令:python3 app.py 10 12 method2 在上述情况下,输出应为method2()打印值为12import sys def method1(): 打印(

我有一个设想。我必须将参数值传递给脚本中的方法和要执行的方法

例如:

文件名app.py

value1 = sys.argv[1]
value2 = sys.argv[2]
def method1():
    print(value1)

def method2():
    print(value2)
我正在尝试执行的命令:
python3 app.py 10 12 method2

在上述情况下,输出应为
method2()
打印值为12

import sys
def method1():
打印(sys.argv[1])
def method2():
打印(sys.argv[2])
如果名称=“\uuuuu main\uuuuuuuu”:
如果sys.argv[3]=“method1”:
方法1()
elif sys.argv[3]=“方法2”:
方法2()
其他:
打印(“无效参数”)
执行日期:

python app.py 10 12 method1
>> 10
python app.py 10 12 method2
>> 12

下面是如何引用要动态调用的函数(从本地符号表使用)

说明: 路线:

locals().get(sys.argv[3], 'method_not_found')(sys.argv[1], sys.argv[2])
工作原理是返回一个类型,我们调用方法get来引用我们要调用的函数(如果找不到,则改为get
method\u not\u found
函数)


然后,在我们得到想要调用的函数之后,我们通过将
sys.argv[1],sys.argv[2]
作为参数传递来执行它。

argv
将是
[“app.py”,“10”,“12”,“method2”]
。因此,如果您想访问
“method2”
参数pass
argv[3]
而不是
argv[2]
,您应该检查它是否非常易于使用,并且在有多个命令行参数要检索时会变得很方便,但我仍然不清楚您到底想要实现什么。您是否试图通过命令行参数选择要调用的函数?@tibebs.M基本上我需要传递参数以单独执行method1函数或method2函数,或者同时执行这两个函数。当我们将参数作为method1传递时,它应该只执行method1函数。如果我们在命令参数中传递方法1和方法2。如果name==“main”:if sys.argv[3]==“method1”:sys.argv[3]()no,它应该执行两个函数scan,我们称之为这样的函数,因为
argv[3]
是一个字符串,而不是
可调用的类型。尽管不建议您使用或
globals()
查看我发布的答案,了解如何使用局部变量()调用method1(value1,value2)这样的方法,您可以从查找表中获取对该函数的引用
local()
只是用来获取函数的引用。最后一个
()
是调用函数的地方。只要在那里传递你想要的任何论点。查看更新的答案就可以得到一个想法,还要确保理解它是如何工作的。
user@pc: python a.py 10 12 method1

10
user@pc: python a.py 10 12 method13

[-] function not found
locals().get(sys.argv[3], 'method_not_found')(sys.argv[1], sys.argv[2])