在使用第三方库的时候可能某些库因为写法原因,再加上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,推荐使用第一种方法。
网友评论