1

fモジュールには、2つの関数があります。それらをとと呼びましょうgg名前付き引数を取りますff中から電話したいのですがg。関数にアクセスするにはどうすればよいfですか?残念ながら、互換性の問題により、名前を変更することはできません。

編集

明確にするために、これは私が意味することです:

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

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

3 に答える 3

7

関数に新しい名前を追加できます。

例えば:

def f():
    pass

f_alt = f

def g(f=3):
    f_alt()

モジュールからf_altをエクスポートしないでください。

于 2012-11-16T16:47:09.817 に答える
6

を使用した基本的な例globals

def f():
    print 'f'

def g(name):
    globals()[name]()

g('f')
于 2012-11-16T16:47:10.050 に答える
5

ここ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
于 2012-11-16T17:08:51.433 に答える