在Python项目中某些第三方库没有代码补全的解决办法

2019-04-28  本文已影响0人  生活知识研习所

在使用第三方库的时候可能某些库因为写法原因,再加上python语言本身的特性,导致编辑器里面无法很好的获取到某个变量的类型信息,因此无法提供代码提示补全功能,例如使用Pillow库的时候:

from PIL import Image

im = Image.open(imPath)

im.是没有补全提示的,解决办法有下面几个:

1.如果使用的python版本是3.5或以上,可以使用类型标注功能,例如

函数接受并返回一个字符串,注释像下面这样:

def greeting(name: str) -> str:

    return 'Hello ' + name

在函数 greeting 中,参数 name 预期是 str 类型,并且返回 str 类型。子类型允许作为参数。

同样的,声明变量也是如此,例如

im = Image.open(imPath) 可以写成这样 im:Image.Image = Image.open(imPath) ,为什么是Image.Image呢?是因为第一个Image本身是个模块名,第二个Image是类名,我们用于注解的时候需要的是类名而不是模块名,因此需要这样写。

如果需要使用原始类型,需要先引入原始类型

from typing import TypeVar, Iterable, Tuple, Dict, List

更多内容参考:https://docs.python.org/zh-cn/3/library/typing.html

2.使用类型注释 #type:类型

例如:

from PIL import Image

im = Image.open(imPath) #type:Image.Image

3.使用assert isinstance(变量,类型)

例如:

from PIL import Image

im = Image.open(imPath)

以上三种方法都不会对python的运行产生影响,仅仅是用于编辑器解析和提供代码补全功能,如果使用的是3.5以上版本的Python,推荐使用第一种方法。

上一篇下一篇

猜你喜欢

热点阅读