解决某些情况编辑器无法自动补全 Python 方法的问题
2018-01-26 本文已影响20人
喵心阳
(以 Intellij IDEA / PyChram 为例)
Python 作为一个自动推定类型的语言,虽然是强类型,但是很多时候,变量的类型推断是在执行中进行的,这种模式一定程度上方便了代码的编写,程序员不需要在每次声明变量时还去考虑繁琐的类型。
不过,对于 IDE 编辑器的自动补全机制来说,这未必是一个好事,因为某种意义上来说,自动补全是要根据变量类型,展示出可以使用的方法的。
正常情况下,编译器会根据上下文智能推断变量的类型,但是有些情况下,比如:
![](https://img.haomeiwen.com/i8919930/74aac1340a39b148.jpg)
这种情况经常出现在类库中,先不管依赖自动补全是不是一个好习惯,在面对一个新库的时候,如果没有补全只能查文档(很多还是英文的),确实挺麻烦的,而且很多方法名只要懂一些简单的英文单词就能看懂,很多时候直接从补全的内容里面找想要的方法,比查文档方便多了。
那么怎么解决这一问题呢,核心问题是:“编辑器不知道变量类型 ”。还好 Python3 给出了一种新特性——指定变量类型。它的写法如下:
![](https://img.haomeiwen.com/i8919930/53d63ea8ff28444a.jpg)
实践例子:
![](https://img.haomeiwen.com/i8919930/8fc3b278dd96fd83.jpg)
![](https://img.haomeiwen.com/i8919930/275ff4afc76c3820.jpg)
而一般的编辑器,只要你有该类型的一个方法就可以找到他的类型:
(如 IDEA/PyCharm):
![](https://img.haomeiwen.com/i8919930/c9371d94af028959.jpg)
也就是说,你最多只需要查一次文档即可
这样编辑器就能实行自动补全了,当然,这个 指定变量类型 的新特性本身并不是为了让编辑器自动补全,而是为了让程序员编写方法时确定传入的参数的数据类型是否是自己想要的,相当于类型检查功能。