- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我把这个想法放在了How to make a cross-module variable?在 python3 中。并且懒得使用变量 __builtins__
而不是模块 builtins
。这应该没有什么区别,因为:
# file spam.py:
import builtins
print (builtins is __builtins__)
print (id(builtins))
print (id(__builtins__))
有趣的是:builtins
在导入时不是 __builtins__
:
$ python3 spam.py
True
140598001743336
140598001743336
$ python3 -c 'import spam'
False
139755426543080
139755426520904
有人知道怎么回事吗?
(给定页面上的评论提到“__builtins__
是 CPython 的特性,你真的不应该使用它”,但我很好奇......)
最佳答案
我真的不知道为什么,但是来自 article
frame globals have a
__builtins__
variable (builtins dictionary, or builtins module when__name__
equals__main__
)
所以在你的第一种情况下 (__name__ == __main__
) 你得到 __builtins__
作为 builtins
模块,但在第二种情况下 (__name__ != __main__
) __builtins__
是一个 dict
实例,来自 docs :
The value of
__builtins__
is normally either this module or the value of this module’s__dict__
attribute.
略微修改了spam.py
import builtins
if __name__ == '__main__':
print(type(__builtins__))
print(__builtins__ is builtins)
print(id(builtins))
print(id(__builtins__))
else:
print(type(__builtins__))
print(__builtins__ is builtins.__dict__)
print(id(builtins.__dict__))
print(id(__builtins__))
我们会得到类似的东西
$ python3 spam.py
<class 'module'>
True
2345652270648
2345652270648
$ python3 -c 'import spam'
<class 'dict'>
True
2770543697736
2770543697736
正如您和@chepner 已经注意到的那样,__builtins__
是一个可以更改的实现细节,因此我们不应该依赖它,尤其是当它是一个builtins
时module/builtins.__dict__
对象。
关于Python3 `builtins` 并不总是 `__builtins__`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54752123/
我收到以下警告,没有提及它发生的行: warning: integer overflows when converted from 'Builtin.Int32' to 'Builtin.Int8'
我不小心删除了我的一个 GAE 项目(用 Go 编写)中的 ah-builtin-datastoreservice 和 ah-builtin-python-bundle 这两个版本。这意味着我的自动备
使用 pig 将数据转换为日期时间时出现问题。导入以下数据集,制表符分隔,我添加了\t 来说明。 5000001 \t 1133938 \t 1273719 \t 2008-06-01 00:03:
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我试图配置预提交挂接,在运行预提交运行--所有文件时,我收到以下错误:。我已尝试升级pip以解决此问题pip安装--升级pip,但我收到另一个错误:。我尝试检查PIP和PIP3的版本,但现在我也收到了
所以我正在阅读Hacking the Art of Exploitation,在书中,他们在 C 代码中使用了 strcpy() 函数: 1 #include 2 #include 3
为什么下面的代码会产生语法错误? >>> import builtins >>> dir(builtins) ['ArithmeticError', 'AssertionError', 'Attrib
我把这个想法放在了How to make a cross-module variable?在 python3 中。并且懒得使用变量 __builtins__ 而不是模块 builtins。这应该没有什
numpy 的 all 中出现这种怪异现象的原因是什么? >>> import numpy as np >>> np.all(xrange(10)) False >>> np.all(i for i
猫测试.go package main import "builtin" func main() { return } 去运行test.go can't find import: "built
我正在尝试使用 py2exe 将我的 .py 脚本转换为可执行文件。到目前为止,我遇到了许多问题,这些问题在很大程度上已通过下面安装文件中的“选项”得到解决。但是现在我遇到了一个我无法找到解决方案的问
我正在尝试使用原子实现旋转线程屏障,特别是 __sync_fetch_and_add。 https://gcc.gnu.org/onlinedocs/gcc-4.4.5/gcc/Atomic-Buil
在我的单元测试中,我在测试中有 2 个提示。我正在尝试使用 2 @patch("builtins.input") , 但它似乎只取返回值中的 1 个。 @patch("builtins.input")
我正在调试我的程序,然后发生了最后一行,我该如何解决?我使用 -fno-builtin 查看了 strcpy() 但它显示正在调用 __strcpy_sse2_unaligned。 root@19:~
This document说: Not all operations are supported by all target processors. 有人知道哪个处理器支持哪个操作吗? 最佳答案 不是
我刚刚开始使用 Rcpp。我有一个简单的程序,它接受两个数值 vector ,计算它们的并集并返回一个数值 vector 。该 list 粘贴在下方 (test.cpp)。 #include #in
在 python 3 中, >>> import keyword >>> keyword.kwlist 和 >>> import builtins >>> dir(builtins) 是两个不同的列表
昨天我的 Mac 决定将 Xcode 11 自动更新到 12,但是哎呀,我仍然需要 Xcode 11。所以我直接从 https://developer.apple.com/download/more/
在使用 Python 并行编程一书中的示例时,我在使用多处理队列的代码中遇到了以下错误: File "C:\pyDev\multiproc\queue-test.py", line 4, in
我正在尝试使用 HttpClient 在 Flutter 应用程序中执行 SSL 证书固定.我之前已经成功地在原生 Android 应用程序中执行了固定。这是我收到的错误消息: E/flutter (
我是一名优秀的程序员,十分优秀!