我有一个函数调用,我正在创建一个类似于:
的库some_function(var1=x,var2=y)
同一个库有另一个函数,它可以进行类似的调用但是对沙箱进行调用:
some_test_function(var1=x,var2=y)
我可能只写:
if sandbox:
some_test_function(var1=x,var2=y)
else:
some_function(var1=x,var2=y)
但是,我想知道是否有更清洁的方法来做到这一点。特别是,我可以将字典定义为{'var1':x,'var2':y}并将其传递给正确的函数?我的伪代码就像:
dict = {'var1':x,'var2':y}
function_name = 'some_test_function' if sandbox else 'some_function'
function_name(dict)
答案 0 :(得分:2)
您创建的任何函数都会将其名称存储在locals()
内置词典中。因此,您可以按名称访问方法,例如:
sandbox = True
def some_function(x, y):
print(x, y)
def some_test_function(x, y):
print("test", x, y)
function_name = "some_function"
if sandbox:
function_name = "some_test_function"
locals()[function_name]('cat', 'dog')
# test cat dog
注意:如果这些是类中的函数,那么您应该看起来像执行类似任务的getattr()
。