创建了一个闭包函数,而后调用赋值给一个变量x,执行三次,这三次变量x的内存地址发生了变化,可能我说的不太明白,看代码和输出应该就能明白了。
def gengerate_count():
container = [0]
def add_one():
container[0] = container[0] + 1
print(container[0])
return add_one
x = gengerate_count()
print(x)
x = gengerate_count()
print(x)
x = gengerate_count()
print(x)
上面这串代码输出为:
.add_one at 0x0000018A4BF2A3A8>
.add_one at 0x0000018A4BF2A318>
.add_one at 0x0000018A4BF2A3A8>
可以看到,x的内存地址在第二次赋值时发生了变化,第三次执行时又变回和第一次相同了。
而后我又多进行多次赋值,
def gengerate_count():
container = [0]
def add_one():
container[0] = container[0] + 1
print(container[0])
return add_one
x = gengerate_count()
print(x)
x = gengerate_count()
print(x)
x = gengerate_count()
print(x)
x = gengerate_count()
print(x)
x = gengerate_count()
print(x)
x = gengerate_count()
print(x)
x = gengerate_count()
print(x)
输出为:
.add_one at 0x0000024E5354A318>
.add_one at 0x0000024E537300D8>
.add_one at 0x0000024E5354A318>
.add_one at 0x0000024E537300D8>
.add_one at 0x0000024E5354A318>
.add_one at 0x0000024E537300D8>
.add_one at 0x0000024E5354A318>
发现,奇数次的内存地址相同,偶数次的内存地址相同。
这是什么原理呢?与python的内存机制有关系么?求大佬解答