1、def test1():
def test2():
return 1
return test2()
test1() // 1 ,外部只能调用test1(),不能调test2(),只有test1内部才能调用test2
2、test2中只能访问test1中的变量而不能修改,这时候可以返回1
正确:
def test1():
x = 1
def test2():
return x
return test2()
test1() // 1 ,
错误:
def test1():
x = 1
def test2():
return x + 1
return test2()
test1() //UnboundLocalError: local variable 'x' referenced before assignment
3、 闭包,进阶test2中可以修改test1中的变量,像global一样关键字nonlocal
def test1():
x = 1
def test2():
nonlocal x
return x + 1
return test2()
test1() // 1 ,