函数闭包,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 内 7319

测试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 内 7319

测试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 内 7311

测试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 内 1119

测试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 @   ty1539  阅读(46)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示