问题标签 [python-internals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 在 python 中覆盖 stderr 的效果
以下代码使python崩溃:
我知道没有真正的理由编写这样的代码,但我想知道它为什么会崩溃。
我的第一个猜测是print
命令失败是因为stdout
被覆盖,然后,在尝试引发异常时,又引发了另一个异常,因为stderr
也被覆盖了。
因此,它在尝试引发异常时会发生堆栈溢出。
谁能解释这里背景中真正发生的事情?
这是堆栈溢出吗?
python - 为什么 Python 处理 '1 is 1**2' 与 '1000 is 10**3' 不同?
受这个关于缓存小整数和字符串的问题的启发,我发现了以下我不理解的行为。
我以为我理解这种行为: 1000 是要缓存的。1000 和 10**3 指向 2 个不同的对象。但我错了:
因此,也许 Python 对计算的处理与“普通”整数不同。但这个假设也不正确:
如何解释这种行为?
python - Python's int function performance
Does Python's built-in function int still try to convert the submitted value even if the value is already an integer?
More concisely: is there any performance difference between int('42')
and int(42)
caused by conversion algorithm?
python - 为什么None是python中最小的?
我从 python None 学到的东西:
None is frequently used to represent the absence of a value
当我放入一个列表并用数字和字符串排序时。我得到以下结果,这意味着它是最小的数字?
撤销:
正常排序:
python 排序函数如何与 None 一起使用?
python - 复合对象上的python垃圾收集器行为
如果仍然引用了复合对象的某些部分,python 垃圾收集器是否会清理它?
例如
会A[0]
被垃圾回收吗?
有没有办法通过代码确认相同?
python - Python:名称评估如何在运行时执行
当名称未定义和未绑定时,我们可以在运行时看到NameError
和。UnboundLocalError
但目前尚不清楚名称评估是如何在运行时发生的?我假设如下:
考虑代码片段的示例
当bar
函数被调用时,我们创建了新的执行框架。将此帧表示为bar_frame
。bar_frame.f_local
字典中不包含任何元素。但bar_frame.f_back.f_locals
包含 4 个名称-值对。所以
我的理解:我们有以下名称评估算法:
试图
name
在currentframe.f_locals
1.1 如果
currentframe.f_locals
对应一个全局命名空间并且没有找到合适的名字则抛出NameError
1.1 如果找到合适的名称并且有界则返回
currentframe.f_locals[name]
1.2 如果找到合适的名字并且是无限抛出
UnboundLocalName
错误。试图
name
在currentframe.f_back.f_locals
请检查我的理解。
python - self = None 有什么作用?
我正在阅读传入包的源代码asyncio
。请注意,在方法的末尾,有一个self = None
语句。它有什么作用?
我认为它会删除实例,但以下测试不建议这样做:
python - 为什么调用 locals() 会添加引用?
我不明白以下行为。
- 如何
locals()
产生新的参考? - 为什么 gc.collect 不删除它?我没有分配
locals()
任何地方的结果。
X
输出是:
python - Python:多重赋值与单独赋值速度
我一直在寻求从我的代码中挤出更多的性能;最近,在浏览这个 Python wiki 页面时,我发现了这个说法:
多重赋值比单独赋值慢。例如“x,y=a,b”比“x=a; y=b”慢。
好奇,我测试了它(在 Python 2.7 上):
我重复了几次,以不同的顺序等,但多次分配片段的表现始终比单个分配好至少 30%。显然,我的代码中涉及变量赋值的部分不会成为任何重大瓶颈的根源,但我的好奇心还是被激起了。当文档另有说明时,为什么多次分配明显比单独分配快?
编辑:
我测试了对两个以上变量的分配并得到了以下结果:
趋势似乎或多或少是一致的;任何人都可以复制它吗?
(CPU:英特尔酷睿 i7 @ 2.20GHz)
python - 为什么 locals() 返回一个奇怪的自引用列表?
所以我使用 locals() 来获取函数中的一些参数。效果很好:
标准的东西。但现在让我们介绍一个列表推导:
诶?为什么要插入自引用?