问题描述: 循环执行以下两个操作: 「 1. 初始化一个实例,2. 输出实例的内存地址」, 发现每次输出的内存地址在两个内存地址中来回跳动, 但是把这两个操作放入函数中调用, 每次输出的内存地址就相同了, 不太懂具体原理, 目前猜测是语言解释的过程中做了缓存? 如果是这样的话, 单例模式的应用场景感觉是不是就很少了?
示例 1:
for i in range(5):
c = Class1()
print id(c)
示例输出:
4467795088
4467795152
4467795088
4467795152
4467795088
示例 2:
def run():
c = Class1()
print id(c)
for i in range(5):
run()
示例输出:
4566115472
4566115472
4566115472
4566115472
4566115472
1. 想请教一下为什么这两个操作在函数中运行时,输出的实例内存地址相同.
2. 想请教一下为什么采用第一种方式的时候,实例的内存地址在两个内存地址中来回跳动
示例 1:
for i in range(5):
c = Class1()
print id(c)
示例输出:
4467795088
4467795152
4467795088
4467795152
4467795088
示例 2:
def run():
c = Class1()
print id(c)
for i in range(5):
run()
示例输出:
4566115472
4566115472
4566115472
4566115472
4566115472
1. 想请教一下为什么这两个操作在函数中运行时,输出的实例内存地址相同.
2. 想请教一下为什么采用第一种方式的时候,实例的内存地址在两个内存地址中来回跳动