gpt4 book ai didi

python - Python __builtins__ 中缺少 __import__ (在 Django Shell 中时)

转载 作者:太空宇宙 更新时间:2023-11-04 06:07:01 24 4
gpt4 key购买 nike

我希望这不是一个太愚蠢的问题 :-( 但为什么 __import__ 没有包含在 inspect.getmembers(__builtins__) 中?

这是我尝试打印内置函数时得到的结果:

>>> sorted([name for (name,obj) in inspect.getmembers(__builtins__)])
['__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'has_key', 'items', 'iteritems', 'iterkeys', 'itervalues', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values', 'viewitems', 'viewkeys', 'viewvalues']

更新:

实际上,当我运行它时,我在 Django 1.6 shell 中。 ( python 2.7)。

单独在 Python 2.7 中运行它会包含 __import__。可能发生了什么?

最佳答案

来自文档:

27.3. __builtin__ — Built-in objects

CPython implementation detail: Most modules have the name __builtins__ (note the 's') made available as part of their globals. The value of __builtins__ is normally either this module or the value of this modules’s [sic] __dict__ attribute. Since this is an implementation detail, it may not be used by alternate implementations of Python.

在您的情况下,看起来您正在查看的 __builtins__ 是字典而不是模块(__builtin__.__dict__ 而不是 __builtin__ ).所以 inspect.getmembers 返回的是 dict 类的属性而不是键。相反,您可能需要如下内容:

if isinstance(__builtins__, dict):
names = sorted(__builtins__)
else:
names = sorted(name for name, obj in inspect.getmembers(__builtins__))

或者:

import __builtin__
names = sorted(name for name, obj in inspect.getmembers(__builtin__))

关于python - Python __builtins__ 中缺少 __import__ (在 Django Shell 中时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21416294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com