递归
打印的444 函数内存地址不同 但是不这么的话 两个内存地址 不同 函数体的内存地址相同 第二种不同 因为执行完了 for 所以 i =2
l = [] for i in range(3): def fun(x ): #新建一个 内存地址存放 print(x*i) # z = x * i # print(z) # print(id(i)) print(x*i) print(id(x*i)) # print(id(z)) # print(id(fun),id(print(x*i))) # print(i) # print(id(fun),id(print())) # print(i) # print(id(y*x)) # print(fun) l.append(fun) for fun in l: fun(2) # print(fun)
# 第一种 第二种 i y 已经有值 了 l 中的func 只有 x 没有值 第二种 因为每一次函数定义 把值给了它 0 1 2 打印的024
l = [] for i in range(3): # def fun(x, y=i ): def fun(x): # print(x*y) print(x*i) l.append(fun) # l = [fun,fun,fun] x*i I= 2 # fun(2) #x*y for 循环先执行 说明已经把值存进去了 #l = [fun,fun,fun] # y = 1 y =2 y =3 # for fun in l: # fun(2) print(l) #[<function fun at 0x000000000254B268>, <function fun at 0x000000000254B2F0>, <function fun at 0x000000000254B378>] print(l[0])# print(l[0](4)) l[0](2) # [<function fun at 0x000000000259B268>, <function fun at 0x000000000259B2F0>, <function fun at 0x000000000259B378>]第二种也是
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?