函数闭包,golbal,nonlocal

测试1:

age = 19
def func1():
    age = 73
    def func2():
        nonlocal age
        # global age
        # age = 11
        print('func2 内',age)
    func2()
    print('func1 内',age)
func1()
print('外 ',age)
输出: 
func2 内 73
func1 内 73
外  19

测试2:

age = 19
def func1():
    age = 73
    def func2():
        # nonlocal age
        global age
        # age = 11
        print('func2 内',age)
    func2()
    print('func1 内',age)
func1()
print('外 ',age)
输出:
func2 内 19
func1 内 73
外  19

测试3:

age = 19
def func1():
    age = 73
    def func2():
        # nonlocal age
        global age
        age = 11
        print('func2 内',age)
    func2()
    print('func1 内',age)
func1()
print('外 ',age)

输出:
func2 内 11
func1 内 73
外  11

测试4:

age = 19
def func1():
    age = 73
    def func2():
        nonlocal age
        # global age # global必须在本作用域中声明age之前使用
        age = 11
        print('func2 内',age)
    func2()
    print('func1 内',age)
func1()
print('外 ',age)
输出:
func2 内 11
func1 内 11
外  19

测试5

name = 'alex' #name=‘lhf’

def change_name():
    name='lhf'
    print('00', name)
    # global name   # global必须在本作用域中声明age之前使用
    name = 'lhf'
    # name='aaaa' #name='bbb'
    def foo():
        # name = 'wu'
        # nonlocal name
        name='bbbb'
        print('02',name)
    print('01',name)
    foo()
    print('03',name)

change_name()
输出:
00 lhf
01 lhf
02 bbbb
03 lhf
posted @ 2021-04-21 11:45  ty1539  阅读(45)  评论(0编辑  收藏  举报