python第三方库无代码提示_类型注释

python第三方库无代码提示_类型注释

tone 2993 2022-11-01

因为python是动态语言,变量类型是可变的,所以不管pycharm还是其他ide都做不到准确的类型推断。

#因为python是弱类型语言动态语言所以只有运行时才会知道sheet是Workbook类型,在编写代码时不会有代码提示除非使用插件,

比如用到的一个名为openpyxl的库在这里突然没有代码提示,(有些人的编译器是有的)

可以使用两个方法来解决,但是实现的原理都一样是将变量指明类型如下

如果要确定变量是哪个类型的话可以查看源码或者百度看人家代码的书写格式和方法再去进行判断是什么类型,或者直接使用type运行代码之后让编译器找他的类型,控制台输出类型之后再将类型注释到代码里,注意类型到导包,使用type判断正确率比较高

目前尝试下来使用type比较准确但是还是有些方法不会提示,可能跟库的版本有关

类型不准确方法提示的方法不完整,还要结合官方文档使用方法

demo1

import openpyxl
from openpyxl import load_workbook

wb=load_workbook('../data/test.xlsx')#打开一个xlsx文件
#下面这一行是要操作的表名,但是不写后面类型注释的话pycharm就不会有代码提示,这个类型注释必须要和变量写在同一行,否则也是没有的
sheet=wb['Sheet1']#type:openpyxl.workbook.Workbook

demo2

import openpyxl
from openpyxl import load_workbook

wb=load_workbook('../data/test.xlsx')#打开一个xlsx文件
#下面这一行是要操作的表名,但是不写后面类型注释的话pycharm就不会有代码提示,这个类型注释必须要和变量写在同一行,否则也是没有的
sheet=wb['Sheet1']
assert isinstance(sheet, openpyxl.workbook.Workbook)#因为python是强类型语言动态语言所以只有运行时才会知道sheet是Workbook类型,在编写代码时不会有代码提示除非使用插件,
#如果在这里使用assert isinstance 指明sheet的类型pycharm就可以正常提示出openpyxl的方法了

demo3

import openpyxl
from openpyxl import load_workbook
from openpyxl.worksheet.worksheet import Worksheet#运行代码使用type得到的类型,虽然和自己写的有所不同但是方法都适用
wb=load_workbook('../data/test.xlsx')#打开一个xlsx文件
sheet=wb['Sheet1']#type:openpyxl.worksheet.worksheet.Worksheet
print(type(sheet))#<class 'openpyxl.worksheet.worksheet.Worksheet'>