![]() |
1
61
日间;夜间:
这就是为什么在函数的情况下
单一的
包含
对象作为数值文本
在第二种情况下,你有
两个不同的代码对象
当然,比较对象(除了显式
这里所述的一切都适用于最流行的Python实现CPython。其他实现可能会有所不同,因此在使用它们时不应作出任何假设。 更长的答案:
以获得更清晰的视图并进一步验证这一点
看起来很奇怪
对于函数
我们只对
通过
当然,它的评估结果
对于每个交互式命令: 如前所述,每个交互式命令都被解释为一个单独的代码块:独立地解析、编译和计算。
对于每个赋值语句,我们将得到一个类似的代码对象,如下所示:
不同的代码对象,不同的内容。 注:
在编译期间,会检查已经存在的常量。看到了吗 @Raymond Hettinger's answer below 注意事项:
|
![]() |
2
18
在交互提示下,输入是 compiled in a single mode 一次处理一个完整的语句。编译器本身(在 Python/compile.c u_consts compiler_add_o() 函数,可以看到在添加新常量(并递增索引)之前,将检查dict以查看常量对象和索引是否已经存在。如果是这样,它们将被重用。
简而言之,这意味着一个语句中的重复常量(例如在函数定义中)被折叠成一个单例。相反,你的
FWIW,这只是一个CPython实现细节(也就是说,语言不保证)。这就是为什么这里给出的引用是C源代码,而不是语言规范,它对这个主题没有任何保证。
|
![]() |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
![]() |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
|
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
![]() |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
|
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
![]() |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |