在一个模块中,我有两个函数,我们称它们f
为g
. g
接受一个命名参数f
。我想f
从里面打电话g
。如何访问该功能f
?不幸的是,由于兼容性问题,我无法更改它们的名称。
编辑
为了澄清,这就是我的意思:
def f():
... code ...
def g(f=1):
... code ...
x = f() # error, f doesn't name the function anymore
... code ...
在一个模块中,我有两个函数,我们称它们f
为g
. g
接受一个命名参数f
。我想f
从里面打电话g
。如何访问该功能f
?不幸的是,由于兼容性问题,我无法更改它们的名称。
编辑
为了澄清,这就是我的意思:
def f():
... code ...
def g(f=1):
... code ...
x = f() # error, f doesn't name the function anymore
... code ...
您可以为该函数添加一个新名称。
例如:
def f():
pass
f_alt = f
def g(f=3):
f_alt()
只是不要从模块中导出 f_alt 。
使用的基本示例globals
:
def f():
print 'f'
def g(name):
globals()[name]()
g('f')
虽然globals()
在这里看起来是一个简单的解决方案,但您也可以通过在内部定义一个g()
调用 global的内部函数来实现相同的目的f
:
def f():print "hello"
def g(f):
def call_global_f():
global f
f()
call_global_f() #calls the global f
print f #prints the local f
g('foo')
输出:
hello
foo