你的Python代码不是唯一运行的东西。Python标准库的大部分内容都是编写的
在里面
Python,这取决于您使用的shell,这可能会导致在第一次键入之前导入相当多的模块。在CPython 3.10.0的空闲状态下:
>>> import sys
>>> len(sys.modules)
159
因此,只要到达提示(!)模块“在封面下”。
“小”整数对象由CPython实现跨用途共享。所有这些模块中的每个3实例都会增加3的refcount。以下是其他一些:
>>> for i in range(-10, 11):
... print(i, sys.getrefcount(i))
-10 3
-9 3
-8 3
-7 3
-6 3
-5 9
-4 5
-3 12
-2 25
-1 190
0 914
1 804
2 363
3 144
4 202
5 83
6 83
7 38
8 128
9 54
10 64
所以3“相当受欢迎”,但0是容易的赢家。但是没有其他东西在使用,例如-10或-9。
但请注意
知道
这对你来说没有实际价值。Python是否以及何时共享不可变对象由实现定义,并且可以(而且确实如此!)在不同版本之间进行更改。