打印的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>]第二种也是