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()