对python变量scop的质疑

2024-06-16 12:34:37 发布

您现在位置:Python中文网/ 问答频道 /正文

Possible Duplicate:
Short Description of Python Scoping Rules

我写了两个简单的函数:

# 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之后赋值,然后引发一个异常:UnboundLocalError: local variable 'var' referenced before assignment,我想在我调用内部print var时,var的值是2,我错了吗?在


Tags: of函数testvardefdescriptionrulesutf
1条回答
网友
1楼 · 发布于 2024-06-16 12:34:37

是的,你错了。函数定义引入了一个新的作用域。在

# 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

相关问题 更多 >