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

对python变量作用域的怀疑

对python变量作用域的怀疑

是的,您在这里不正确。函数定义引入了新的范围。

# coding: utf-8
def test():
    var = 1 
    def print_var():
        print var    <--- var is not in local scope, the var from outer scope gets used
    print_var()
    print var

test()
# 1
# 1
def test1():
    var = 2 
    def print_var():
        print var     <---- var is in local scope, but not defined yet, ouch
        var = 3 
    print_var()
    print var

test1()
# raise Exception
@H_502_5@
 

          

解决方法

我写了两个简单的函数:

# coding: utf-8
def test():
    var = 1 
    def print_var():
        print var 
    print_var()
    print var

test()
# 1
# 1
def test1():
    var = 2 
    def print_var():
        print var 
        var = 3 
    print_var()
    print var

test1()
# raise Exception

相比之下,test1()在之后赋值print var,然后引发Exception:,UnboundLocalError: local variable 'var' referenced before assignment我认为当我调用inner时print var,var的值为2,我错了吗?

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!
# coding: utf-8
def test():
    var = 1 
    def print_var():
        print var 
    print_var()
    print var

test()
# 1
# 1
def test1():
    var = 2 
    def print_var():
        print var 
        var = 3 
    print_var()
    print var

test1()
# raise Exception

我写了两个简单的函数:

相比之下,test1()在之后赋值print var,然后引发Exception:,UnboundLocalError: local variable 'var' referenced before assignment我认为当我调用inner时print var,var的值为2,我错了吗?

python 2022/1/1 18:30:54 有400人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

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

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

请先登录

推荐问题


联系我
置顶