即使if语句中的条件从未执行,该函数如何被覆盖?
在编译时决定变量是局部变量还是全局变量。如果对函数中任何位置的变量都有赋值,则它是局部变量,无论赋值是否执行过。
这发生在python 2.7中-在python 3中是否一样?
是。
顺便说一下,在Python 2中,您可以使用exec
(不推荐)覆盖此行为:
def do_something():
print 'doing something...'
def maybe_do_it(hesitant=False):
if hesitant:
exec "do_something = lambda: 'did nothing'"
result = do_something()
print result
maybe_do_it(False) # doing something...
maybe_do_it(True) # did nothing