function
がbuiltins.pyi
に "定義された" されてPythonの3になりましたbuiltins
です:
class function:
# TODO not defined in builtins!
__name__ = ... # type: str
__qualname__ = ... # type: str
__module__ = ... # type: str
__code__ = ... # type: Any
__annotations__ = ... # type: Dict[str, Any]
定義された対I "が定義されている" 使用に注意してください。この不条理をチェックアウト:
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
ファイルの "定義"を参照してはいけない)か、意図した動作かどうかはわかりません。
いずれかの方法で、モジュールと機能とにかく、おそらく良い変数名ではありません。
PyCharmスタブになぜ "機能"が存在するのかまだ分かりません。 –
@LaurentLAPORTE JetBrainsに質問する必要がありますが、私の答えで説明したように、何らかの形でヒントを付けるのが最も一般的です。 – DeepSpace
GitHubで[Typeshed](https://github.com/python/typeshed/)のリファレンスが見つかりました。引用: "各Pythonモジュールは' .pyi' "stub"で表されます。これは、すべてのメソッドが空であることを除いて、通常のPythonファイル(つまり、Python 3で解釈可能)です。関数には、Pythonの関数注釈([PEP 3107](https://www.python.org/dev/peps/pep-3107/))があります。" –