您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Python中,即使条件未执行,条件内的变量是否也会隐藏全局范围?

在Python中,即使条件未执行,条件内的变量是否也会隐藏全局范围?

即使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

一个exec函数内部会,严格地讲,推迟决定是否整体或局部地查找到的变量的执行时间。

python 2022/1/1 18:33:54 有219人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶