关于Python的类型注解问题(如何在Pycharm中让python第三方库的显示代码提示)

让Pycharm等IDE显示python第三方库的代码提示

  • 常用写法:基本类型注解(写法一),其语法:
变量名: 类型

示例如下:

var_1: int = 123
var_2: str = "hello world!"
var_3: list = [1, 2, 3, "hello"]
var_4: list[int] = [1, 2, 3]
var_5: tuple = (1, 2, 3)
var_6: tuple[int, int, int] = (1, 2, 3)
var_7: dict[str, int] = {"小明": 98, "小王": 95}
  • 基本类型注解(写法二),其语法:
# type: 类型

示例如下:

var_8 = [1, 2, 3]  # type:list[int]
var_9 = [1, 2, 3]  # type:list
  • 函数参数形式的类型注解,其语法和基本类型的注解是一样的,语法:
    示例如下:
参数: 类型
def test_func1(data: int):
    print(data)


# 以下这种写法是错误的
def test_func1(data):  # type:int
    print(data)
  • 函数的返回值类型注解,其语法:
-> 类型

示例如下:

def test_func2(data: int) -> int:
    print(data)
    return 1
  • Union联合类型的使用,其语法:
Union[类型,类型,......]

示例如下:

# 使用前需要导包
from typing import Union

# Union[]联合注解,联合注解更多的是用于容器方面上,如list[Union[]]
var_10: list[Union[int, str]] = [1, "hello", 1, 23, "world!"]
# 此出有警告提示,是因为元组本身是具有无序的特性的,所以使用Union[]联合注解是不能确定内容顺序的
var_11: tuple[Union[int, str]] = (1, "hello")
# 字典使用Union联合注解
var_12: dict[Union[int, str], Union[int, str]] = {1: "1", "小明": 123}


# 函数参数使用联合Union[]注解
def test_func3(data: list[Union[int, str]]) -> list[Union[int, str]]:
    print(data)
    return data


# 此处注意,字典类型data把key和value都需要用类型注解
def test_func4(data: dict[Union[int, str], str]) -> list[Union[int, str]]:
    """
    以下函数形参的key是联合类型(int或str),value是str类型
    :param data: 传入的具有联合(int或str)类型的字典数据
    :return: 返回具有联合类型(int或str)的列表数据
    """
    print(data)
    return list(data.keys())

  • 其他方式:使用isinstance 指定,这种指定比较麻烦,不方便使用,个人不建议使用。此方法的内容引用链接:pycharm 第三方库函数无代码提示解决方案
from urllib import request
from http.client import HTTPResponse


def demo():
    s = request.urlopen('http://www.baidu.com')
    assert isinstance(s, HTTPResponse)
    // 这就有提示了
    s.read()


if __name__ == '__main__':
    demo()

你可能感兴趣的:(Python编程基础,网络爬虫,python,pycharm,开发语言)