在一个模块中,我有两个函数,我们称之为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 ...
答案 0 :(得分:6)
您可以为该功能添加新名称。
E.g:
def f():
pass
f_alt = f
def g(f=3):
f_alt()
只是不要从模块中导出f_alt。
答案 1 :(得分:6)
使用globals
的基本示例:
def f():
print 'f'
def g(name):
globals()[name]()
g('f')
答案 2 :(得分:6)
尽管globals()
在这里似乎是一个简单的解决方案,但您也可以通过在g()
内定义调用全局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