- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我今天正在编码并注意到一些东西。如果我打开一个新的解释器 session (IDLE)并检查 dir
函数定义的内容,我会得到:
$ python
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__']
>>> dir(__builtins__)
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'None', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'ZeroDivisionError', '_', '__debug__', '__doc__', '__import__', '__name__', '__package__', 'abs', 'all', 'any', 'apply', 'basestring', 'bin', 'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', 'exit', 'file', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'intern', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'long', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', 'vars', 'xrange', 'zip']
>>> import __builtin__
['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'NameError', 'None', 'NotImplemented', 'NotImplementedError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'ReferenceError', 'RuntimeError', 'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEncodeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarning', 'ValueError', 'Warning', 'ZeroDivisionError', '_', '__debug__', '__doc__', '__import__', '__name__', '__package__', 'abs', 'all', 'any', 'apply', 'basestring', 'bin', 'bool', 'buffer', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'cmp', 'coerce', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', 'exit', 'file', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'intern', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list', 'locals', 'long', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', 'vars', 'xrange', 'zip']
>>> dir(__builtin__) == dir(__builtins__) # They seem to have the same things
True
请注意最后一行。
所以,我的问题是:
有没有另一个的别名?
Python 人是否打算摆脱其中之一?
我应该为自己的程序使用什么?
Python 3 怎么样?
任何信息都是有值(value)的!
重要:
我在 Ubuntu 上使用 Python 2.7.2+。
最佳答案
直接来自 python 文档: http://docs.python.org/reference/executionmodel.html
By default, when in the
__main__
module,__builtins__
is the built-in module__builtin__
(note: no 's'); when in any other module,__builtins__
is an alias for the dictionary of the__builtin__
module itself.
__builtins__
can be set to a user-created dictionary to create a weak form of restricted execution.CPython implementation detail: Users should not touch
__builtins__
; it is strictly an implementation detail. Users wanting to override values in the builtins namespace shouldimport
the__builtin__
(no 's') module and modify its attributes appropriately. The namespace for a module is automatically created the first time a module is imported.
请注意,在 Python3 中,模块 __builtin__
已重命名为 builtins
以避免这种混淆。
关于python - __builtin__ 和 __builtins__ 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11181519/
为什么我不能查看__builtins__的源代码模块? >>> import inspect >>> inspect.getsource(__builtins__) Traceback (most r
为什么我不能查看__builtins__的源代码模块? >>> import inspect >>> inspect.getsource(__builtins__) Traceback (most r
这里是我如何尝试覆盖 __builtins__ 函数: >>> lisa = __builtins__.list >>> list('123') ['1', '2', '3'] >>> 它按我预期的那
如果我编码有误并且我做了这样的事情: __builtins__ = 'abcd' 在我没有编写代码之前 import builtins 有没有办法将 __builtins__ 恢复到它的默认值? 最佳
如果你运行这段代码: src = "import os" d = dict(__builtins__={}) exec src in d Python 说: ImportError: __import
我把这个想法放在了How to make a cross-module variable?在 python3 中。并且懒得使用变量 __builtins__ 而不是模块 builtins。这应该没有什
我有以下脚本: a.py print(__builtins__.max) import b 和以下模块: b.py print(__builtins__.max) 使用 python3 a.py 启动
我正在使用内置模块插入一些实例,因此可以全局访问它们以进行调试。 __builtins__ 模块的问题是它是主脚本中的一个模块并且是模块中的一个字典,但是由于我的脚本取决于情况可以是主脚本或模块,我必
我今天正在编码并注意到一些东西。如果我打开一个新的解释器 session (IDLE)并检查 dir 函数定义的内容,我会得到: $ python >>> dir() ['__builtins__',
我可以让 python 打印 __builtins__ 的源代码吗?直接地? 或(更优选): __builtins__ 的源代码路径名是什么? ? 我至少知道以下几点: __builtins__是一个
我有一个包含以下内容的 python 脚本: # foo.py __builtins__ = 3 del __builtins__ print(int) # python3 -i foo.py
我正在探索 REPL,我注意到了 __builtins__ 模块。 我进去了 >>> __builtins__. 然后点击 Tab,然后 Python REPL 向我展示了一个内置标识符列表,包括ab
>>> eval('potato', {'__builtins__': None}) NameError: name 'potato' is not defined Python 2。有道理。 >>>
如果我打开交互模式并输入: __builtins__ = 0 # breaks everything 我是否完全中断了 session ?如果是这样,幕后发生了什么将 __builtins__ 分配给
我试图了解 eval 和 exec 如何处理给定的环境(全局变量和局部变量),所以我创建了一个类“logdict”,它的行为类似于字典,但记录了大多数方法(排除了 __new__): from fun
一个同学问了一个关于覆盖内置类字典的问题,经过一番摸索,我变得更加不确定。 拿内置的字典。我可以分配这个变量: >>> dict=5 >>> dict 5 现在我失去了对 dict 的访问权限(这会像
我想检查 __builtins__ 中列出的那些是否从 callable 返回 True(作为测试它们是否为函数的方法或不)。我希望返回 those 的列表Python 文档中的函数。我意识到其他项目
我现在正在尝试编码挑战。我之前无法更改代码del __builtins__.__dict__["__import__"] 但之后必须使用 import。我需要一种方法来恢复默认的 __builtins
我希望这不是一个太愚蠢的问题 :-( 但为什么 __import__ 没有包含在 inspect.getmembers(__builtins__) 中? 这是我尝试打印内置函数时得到的结果: >>>
我是一名优秀的程序员,十分优秀!