Python调用与命名参数同名的函数

时间:2012-11-16 16:45:01

标签: python function scope global-variables local-variables

在一个模块中,我有两个函数,我们称之为fgg采用命名参数f。我想从f内拨打g。如何访问函数f?不幸的是,由于兼容性问题,我无法更改其名称。

修改

澄清一下,这就是我的意思:

def f():
  ... code ...

def g(f=1):
  ... code ...
  x = f() # error, f doesn't name the function anymore
  ... code ...

3 个答案:

答案 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