gpt4 book ai didi

python - 使用 PyCharm 隐藏内置名称 "function"和 "module"

转载 作者:太空狗 更新时间:2023-10-29 18:29:24 30 4
gpt4 key购买 nike

我有以下 Python 代码:

function = "Developer"
module = "something"
print(function + " on " + module)

在 PyCharm 2017 中,我有一个气泡,上面写着“使用 PyCharm 的阴影内置名称“函数”/“模块””。

我很惊讶,因为“函数”和“模块”不是内置名称。它们也不是关键字:

import __builtin__
import keyword

assert "function" not in dir(__builtin__) # -> OK
assert "module" not in dir(__builtin__) # -> OK
assert "function" not in keyword.kwlist # -> OK
assert "module" not in keyword.kwlist # -> OK

怎么了?

我正在使用 CPython 2.7,但在使用 3.5 和 3.6 时遇到了同样的问题。

编辑:

__builtin__ 现在是 Python 3 中的 builtins

最佳答案

函数builtins.pyi中“定义”:

class function:
# TODO not defined in builtins!
__name__ = ... # type: str
__qualname__ = ... # type: str
__module__ = ... # type: str
__code__ = ... # type: Any
__annotations__ = ... # type: Dict[str, Any]

请记住,我使用的是“已定义”与已定义。看看这个荒谬的地方:

foo = function

加注

Traceback (most recent call last):
File "main.py", line 117, in <module>
foo = function
NameError: name 'function' is not defined

然而,如果您执行 function = 'a',IDE 会提示(如您所见)这隐藏了一个内置名称(即使 function 显然不是实际上定义)。

module 重复了确切的行为。

这是因为(据我所知,如果我错了,请任何人纠正我)pyi 文件仅用于提供类型提示(如 PEP-484 suggests)。

所以,我不确定这个警告是 Pycharm 的 linter 中的错误(也许它不应该查看 .pyi 文件中的“定义”)还是预期的行为。

无论如何,modulefunction 可能都不是好的变量名。

关于python - 使用 PyCharm 隐藏内置名称 "function"和 "module",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45214672/

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