pyt*_*hor 1 python scope function global-variables local-variables
在模块中,我有两个功能,让我们给他们打电话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 ...
Run Code Online (Sandbox Code Playgroud)
您可以为该函数添加新名称.
例如:
def f():
pass
f_alt = f
def g(f=3):
f_alt()
Run Code Online (Sandbox Code Playgroud)
只是不要从模块中导出f_alt.
基本示例使用globals:
def f():
print 'f'
def g(name):
globals()[name]()
g('f')
Run Code Online (Sandbox Code Playgroud)
虽然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')
Run Code Online (Sandbox Code Playgroud)
输出:
hello
foo
Run Code Online (Sandbox Code Playgroud)