摘自:Python 类型提示简介 - FastAPI (tiangolo.com)
快速入门
类型提示用于声明一个变量的类型,在Python 3.6+版本的时候引入。
示例:
def get_full_name(first_name: str, last_name: str): full_name = first_name.title() + " " + last_name.title() return full_name print(get_full_name("peter","park"))
注意,类型提示用的是冒号,不是设置默认参数的等号。
这样编写的好处在于,编辑器知道参数类型后,比如vs code,输完 first_name.
后按一下 Ctrl + Space,会自动显示字符串支持的方法。
嵌套类型
有些容器数据结构可以包含其他的值,比如 dict
、list
、set
和 tuple
。它们内部的值也会拥有自己的类型。
你可以使用 Python 的 typing
标准库来声明这些类型以及子类型。
它专门用来支持这些类型提示。
列表
例如,让我们来定义一个由 str
组成的 list
变量。
从 typing
模块导入 List
(注意是大写的 L
):
from typing import List def process_items(items: List[str]): for item in items: print(item)
这表示:"变量 items
是一个 list
,并且这个列表里的每一个元素都是 str
"。
这样,即使在处理列表中的元素时,编辑器也可以提供支持。
元组和集合
声明 tuple
和 set
的方法也是一样的:
from typing import Set, Tuple def process_items(items_t: Tuple[int, int, str], items_s: Set[bytes]): return items_t, items_s
这表示:
- 变量
items_t
是一个tuple
,其中的每个元素都是int
类型。 - 变量
items_s
是一个set
,其中的每个元素都是bytes
类型。
字典
定义 dict
时,需要传入两个子类型,用逗号进行分隔。
第一个子类型声明 dict
的所有键。
第二个子类型声明 dict
的所有值:
from typing import Dict def process_items(prices: Dict[str, float]): for item_name, item_price in prices.items(): print(item_name) print(item_price)
这表示:
- 变量
prices
是一个dict:
- 键都是
str
类型 - 值都是
float
类型
类作为类型
你也可以将类声明为变量的类型。
假设你有一个名为 Person
的类,拥有 name 属性:
class Person: def __init__(self, name: str): self.name = name def get_person_name(one_person: Person): return one_person.name
接下来,你可以将一个变量声明为 Person
类型:
class Person: def __init__(self, name: str): self.name = name def get_person_name(one_person: Person): return one_person.name
然后,你将再次获得所有的编辑器支持。