前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对于PyCharm某些库没有自动提示的处理

对于PyCharm某些库没有自动提示的处理

作者头像
freesan44
发布2019-03-01 15:38:22
2.9K0
发布2019-03-01 15:38:22
举报
文章被收录于专栏:freesan44freesan44

前言

因为python是动态语言,特别是类似网络请求返回参数,在还没收到请求前都不知道参数类型,导致没法用自动提示,如图:

resp没法提示.decode()之类的 pycharm帮助文档有提供类型定义,方便我们自动智能提示

解决方案

1. 指定函数的参数类型:

如果为以下则指定param为str类型:

代码语言:javascript
复制
def f(param: str):

如果为以下则指定param为str类型,但可以不传入参数(就是可以为f()):

代码语言:javascript
复制
def f(param: str = None):

如果为以下则指定param为str类型和Bool类型:

代码语言:javascript
复制
def f(param: Union[str, bool]):

如果为以下则可选param为str类型:

代码语言:javascript
复制
def f(param: Optional[str] = None):
2. 指定函数的返回参数类型:

但如果如下图就不行,因为Python在定义类之前不允许引用类对象:

所以可以改为:

代码语言:javascript
复制
class ToDo(Base):
    __tablename__ = 'todo'
    id = Column(Integer, primary_key=True)
    title = Column(Text)

    @classmethod
    def list(cls) -> List['ToDo']:
        return session.query(cls).order_by(cls.title)
3. 指定局部变量属性的类型:
4. 预期类型来进行判断操作:
5. python3.6以上版本可用的,转换变量:

3.6之前:

代码语言:javascript
复制
from typing import List, Optional
xs = []  # type: List[Optional[str]]

3.6之后

代码语言:javascript
复制
from typing import List, Optional
xs: List[Optional[str]] = []

注意:以上5种方法,如果光标在想注释的变量上,按快捷键⌥⏎(Alt + Enter),就能用选项选择来快捷生成

6. 运行时(调试)收集对象类型:

File | Settings | Build, Execution, Deployment | Python Debuggerfor Windows and Linux PyCharm | Preferences | Build, Execution, Deployment | Python Debugger for macOS 把Collect run-time types information for code insight 打开 注意:该选项会把调试运行时间耗时加长!

并且在 File | Settings | Editor | General | Smart Keys for Windows and Linux PyCharm | Preferences | Editor | General | Smart Keys for macOS Smart Keys中,把【Insert type placeholders in the documentation comment stub】打开

那么在debug模式运行一遍的情况下,对方法调用(Alt+ Enter),选择【 Insert documentation string stub】,就能自动对注释的参数类型进行定义

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.01.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 解决方案
    • 1. 指定函数的参数类型:
      • 2. 指定函数的返回参数类型:
        • 3. 指定局部变量属性的类型:
          • 4. 预期类型来进行判断操作:
            • 5. python3.6以上版本可用的,转换变量:
              • 6. 运行时(调试)收集对象类型:
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档