作为开发人员,我们已经习惯了IDE的智能提示,针对PyCharm无代码提示整理下解决方案。
PyCharm无代码提示大概可以归为3类
Python内置语法无智能提示
通过pip安装的第三方库,导入后代码无提示
第三方库函数代码无提示 其中问题最多的可能就是这种
下面咱们就针对这3类问题说下解决方案
环境:Mac、PyCharm 2022.3.3 、Python3.11.1
1、Python内置语法无智能提示
复现:准备导入包“输入i”无只能提示
![](https://i-blog.csdnimg.cn/blog_migrate/fb895009eb6790bb2a764dd9db4c6737.png)
解决:File->Power Save Mode 取消勾选
![](https://i-blog.csdnimg.cn/blog_migrate/eb582cfcaaedbe770d09a80daddba574.png)
解决后效果:
![](https://i-blog.csdnimg.cn/blog_migrate/2121d605baeac15a8531fa33a931c4e4.png)
2、通过pip安装的第三方库,导入后代码无提示
这种是因为安装的第三方库没有加入到当前环境中,解决办法:PyCharm->References->Project:python->Python Interpreter
![](https://i-blog.csdnimg.cn/blog_migrate/f6ff7755ec7694c20ce753c5d957174e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ebdd53a40519eb26908a043e16095d12.png)
![](https://i-blog.csdnimg.cn/blog_migrate/ceeaffe85ce0cb5c71c552b27e980b87.png)
![](https://i-blog.csdnimg.cn/blog_migrate/43171a596ef965b724feabbd6567c0ae.png)
3、第三方库函数代码无提示(重要)
复现:我这里以urllib库读取网页内容为例,在通过response调用read()函数时无提示。
![](https://i-blog.csdnimg.cn/blog_migrate/de9f2a7ba877a9e297e7f2092f4aab50.png)
代码:
import urllib.request
url = "http://www.baidu.com/"
response = urllib.request.urlopen(url)
# 读取数据
response.
解决办法:
前提是知道变量的类型,要获取变量类型,我们可以用type()函数提前打印下类型
![](https://i-blog.csdnimg.cn/blog_migrate/d3fdf83595000a1a8b32641b07016cc5.png)
①、通过isinstance()函数
isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。
代码:
# 记得导入包
import http.client
import urllib.request
url = "http://www.baidu.com/"
response = urllib.request.urlopen(url)
# 通过isinstance() 增加智能提示
assert isinstance(response, http.client.HTTPResponse)
response.rea
![](https://i-blog.csdnimg.cn/blog_migrate/2f7ac7ca094f946fb41ab0114fce076b.png)
②、使用类型注解
代码:
# 记得导入包
import http.client
import urllib.request
url = "http://www.baidu.com/"
# 使用类型注解
response = urllib.request.urlopen(url) # type: http.client.HTTPResponse
response.
![](https://i-blog.csdnimg.cn/blog_migrate/917d243a562079094eb0ac094f55700f.png)
③、通过注释指定类型
代码:
# 记得导入包
import http.client
import urllib.request
url = "http://www.baidu.com/"
response = urllib.request.urlopen(url)
"""
:type:http.client.HTTPResponse
"""
response.r
![](https://i-blog.csdnimg.cn/blog_migrate/846e303da2b2abb570a2fc5ea32cedbb.png)
最后:虽然给出了3中解决方案,但是都需要人为增加代码,没有找到更好的方法,如果朋友们无需增加代码的方案,可以留言告知下,感谢!