(1)是的,您基本上是正确的。
该python_stubs@H_403_4@文件是 自动 生成的文件,其中包含内置函数的虚拟定义。如果未针对给定版本对内置函数进行硬编码,则PyCharm使用它来推断内置函数的类型。
(3)并非总是只能从其文档中正确推断出内置functoin的类型。一些文档字符串以“类型签名”开头:
>>> print(min.__doc__)
min(iterable[, key=func]) -> value
min(a, b, c, ...[, key=func]) -> value
@H_403_4@
但是pickle.load()@H_403_4@没有。
请注意,这可能会在将来的python版本中发生变化,因为从python3.4开始引入了Argument Clinic,它可以更好地检查C语言中定义的内置函数。我不确定PyCharm是否已经能够获取该信息。
(2)尝试重建python骨架。但是,AFAIK(如果这不起作用)唯一的真实选择是在PyCharm的问题跟踪器上打开故障单。