Python 2.7 具有几乎相似的函数和参数的DRY
我对一个库进行了一个函数调用,看起来像:Python 2.7 具有几乎相似的函数和参数的DRY,python-2.7,function,Python 2.7,Function,我对一个库进行了一个函数调用,看起来像: some_function(var1=x,var2=y) dict = {'var1':x,'var2':y} function_name = 'some_test_function' if sandbox else 'some_function' function_name(dict) 同一个库还有另一个函数,该函数对沙盒进行类似的调用: some_test_function(var1=x,var2=y) 我可以写: if sandbox:
some_function(var1=x,var2=y)
dict = {'var1':x,'var2':y}
function_name = 'some_test_function' if sandbox else 'some_function'
function_name(dict)
同一个库还有另一个函数,该函数对沙盒进行类似的调用:
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}并将其传递给正确的函数吗?我的psuedo代码类似于:
some_function(var1=x,var2=y)
dict = {'var1':x,'var2':y}
function_name = 'some_test_function' if sandbox else 'some_function'
function_name(dict)
您创建的任何函数的名称都将存储在
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()