是否可以通过如下字符串定义Python函数参数列表?:
param_list = "alpha, beta = 100, *args"
def my_func(param_list):
return 100
答案 0 :(得分:3)
不,没有合理的方法可以做到这一点。
答案 1 :(得分:1)
如果您出于某种原因希望能够使用字符串重新定义函数参数,则可以执行此操作,但它需要使用eval()和字符串格式。
简写示例:
#since you can do:
def a():
return 1
def b():
return 2
a = b
#a() returns 2 now, because calls to a() are actually calls to b() now
#you can also do:
a = eval("def a({str_of_args}): \n return 3")
#a(proper arguments) now returns 3
话虽如此,我想不出任何情况下这实际上是一个好主意。 99.9%的情况下,它是一个丑陋的黑客,如果你必须这样做,那么它应该被视为一个标志,整个设计可能会出现严重错误。
答案 2 :(得分:-1)
我相信您需要拆分字符串并阅读'参数'。 python无法将您的字符串转换为参数。 猜猜你可以使用eval ...但它的丑陋。
你可以做的是建立一个字符串
"my_func(alpha, beta = 100, *args)"
并评估它:
eval("my_func(alpha, beta = 100, *args)")
你也可以这样做:
my_func(eval("alpha, beta = 100, *args"))
但是,您可能希望对功能进行更改,因为这会给您一个错误。
如果要传递可变数量的对象,请使用与其相同的args。
答案 3 :(得分:-1)
您可以传递可变数量的参数:
def someMethod(*listOfStringParameters):
for i in listOfStringParameters:
print(i)
someMethod("alpha", "beta", "gamma", "delta")
输出:
alpha
beta
gamma
delta