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

解决方案
1. 指定函数的参数类型:

def f(param: str):
如果为以下则指定param为str类型,但可以不传入参数(就是可以为f()):
def f(param: str = None):
如果为以下则指定param为str类型和Bool类型:
def f(param: Union[str, bool]):
如果为以下则可选param为str类型:
def f(param: Optional[str] = None):
2. 指定函数的返回参数类型:


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之前:
from typing import List, Optional
xs = [] # type: List[Optional[str]]
3.6之后
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 打开 注意:该选项会把调试运行时间耗时加长!



