gpt4 book ai didi

python - 覆盖 __builtins__ 函数不适用于导入

转载 作者:行者123 更新时间:2023-11-28 16:38:41 24 4
gpt4 key购买 nike

这里是我如何尝试覆盖 __builtins__ 函数:

>>> lisa = __builtins__.list
>>> list('123')
['1', '2', '3']
>>>

它按我预期的那样工作。

现在,当我尝试覆盖 import 时:

>>> importing = __builtins__.__import__
>>> importing sys
File "<stdin>", line 1
importing sys
^
SyntaxError: invalid syntax
>>> import sys
<module 'sys' (built-in)>
>>>

为什么当我尝试覆盖导入时它不起作用?

最佳答案

您不能在 Python 中创建新的关键字和语句; import is a statement , importing 不是。

您所做的只是绑定(bind) __import__ built-in function一个新的名字;你甚至不需要使用 __builtins__ 模块来做到这一点:

importing = __import__

sys = importing('sys')

__builtins__ 名称是 CPython 实现细节,与关键字无关;它是 Python 查找内置函数、类型和常量的位置。另见 __builtin__ module (没有 s)。

要执行您想要的操作,需要扩展 Python 解析器,以将 importing 识别为 import 的别名。

关于python - 覆盖 __builtins__ 函数不适用于导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22424618/

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