我想运行一个带有list参数的函数:
param = ['a', 'b', 'c']
myFunction(param)
但是a,b和c必须是动态的,因此我想删除引号以获取此信息:
param = [a, b, c]
myFunction(param)
我该怎么做?
PS:我尝试了此问题的解决方案,但Removing quotation marks from list items
无效答案 0 :(得分:3)
如果我理解正确,您实际上想使用参数myFunction
,a
和b
调用c
(假设这些实际上是在前面定义的)。
一种方法是:
a, b, c = 1, 2, 3
param = ['a', 'b', 'c']
def myFunction(x, y, z):
return x + y + z
myFunction(*[globals()[s] for s in param])
# returns: 6
正如人们所建议的那样,一种安全的方法是通过globals()
(或locals()
使用稍微不同的结构)。否则,您可以使用eval()
,它功能更强大,但安全性也可能更低。
答案 1 :(得分:1)
'str'
不能转换为变量名,但是,如果您确实有变量,并且您的目标是将每个变量传递给函数,则可以实现
def addition(x):
return x + 1
a = 1 b = 2 c = 3
param = [a, b, c]
print([addition(i) for i in param])
# [2, 3, 4]
整个列表也可以像这样通过
def addition(x):
return sum(x)
a = 1
b = 2
c = 3
param = [a, b, c]
print(addition(param))
# 6