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 ,