扫码阅读
手机扫码阅读
Python 中如何编写类型提示
![](/theme/default/default/images/main/eye-open.png)
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
![](/theme/default/default/images/main/icon-link.png)
![](/theme/default/default/images/main/icon-jing.png)
咸鱼运维杂谈
扫码关注公众号
Python 类型提示概述
Python 是一种动态类型语言,但为了提高代码的可读性和可维护性,PEP 484 引入了类型提示。类型提示允许开发者为变量、函数的参数和返回值指定类型,使代码更易于理解和调试。详细介绍请参考:类型提示介绍。
为函数编写类型提示
类型提示可用于指定函数返回不同类型的数据。例如,使用管道符(|)或Union
来表示函数返回值为str
或None
。Python 3.10 之前使用typing
模块的Union
,3.10 及以后版本使用管道符。
def parse_email(email_address: str) -> str | None:
...
当函数返回多个对象时,默认以元组形式返回,类型提示如下:
def parse_email(email_address: str) -> tuple[str, str] | None:
...
使用typing
模块的Union
和Tuple
也可以达到相同效果。
为回调函数编写类型提示
在 Python 中,回调函数是可以作为参数传递的函数,类型提示使用Callable
。例如:
def apply_func(func: Callable[..., T], *args: Any, **kwargs: Any) -> T:
...
其中Callable[..., T]
表示回调函数可以接受任意数量的参数,返回类型为T
。
为生成器编写类型提示
生成器是特殊的迭代器,允许按需生成值。使用yield
语句创建,并通过Generator
类型进行类型提示。例如:
def parse_email() -> Generator[tuple[str, str], str, str]:
...
类型提示Generator[tuple[str, str], str, str]
表示生成器会产生一个包含两个字符串的元组,接受str
类型的输入,并返回str
类型的结果。
生成器也可以使用Iterator
进行类型提示,但这样无法指定send
类型和return
类型。使用Iterable
类型提示可以让函数接受任何可迭代对象。
想要了解更多内容?
![](/theme/default/default/images/main/icon-link.png)
![](/theme/default/default/images/main/icon-jing.png)
咸鱼运维杂谈
扫码关注公众号
咸鱼运维杂谈的其他文章
加入社区微信群
与行业大咖零距离交流学习
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
![](https://cdn.easycorp.cn/rongpm/upload/202312/f_39217d624bb2b42ce8f6322ebd7e573a.png)
软件研发质量管理体系建设
白皮书上线