栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python类型提示语法如何/为什么起作用?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python类型提示语法如何/为什么起作用?

这里没有类型提示。您所做的只是提供 注释 ;这些是在PEP
3107
中引入的(仅在Python 3中,在Python
2中不支持此功能);它们允许您注释参数并使用任意信息返回值以供以后检查:

>>> greeting.__annotations__{'name': <class 'str'>, 'return': <class 'str'>}

否则,此处完全不咨询他们。相反,您收到的错误消息来自尝试 在函数主体中 串联字符串和整数值:

>>> 'Hello ' + 1Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: Can't convert 'int' object to str implicitly

这是一个自定义类型错误,旨在提供有关

str
+
int
级联失败的其他信息;
str.__add__
对于任何非以下类型,该方法都会将其抛出
str

>>> ''.__add__(1)Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: Can't convert 'int' object to str implicitly>>> ''.__add__(True)Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: Can't convert 'bool' object to str implicitly

然后,PEP 484建议利用这些注释,通过 其他工具 进行实际的静态类型检查,但作为PEP的介绍如下:

尽管这些注释可以在运行时通过常用

__annotations__
属性使用, 但在运行时不会进行类型检查
。相反,该建议假设存在一个单独的脱机类型检查器,用户可以自愿在其源代码上运行该检查器。本质上,这种类型检查器可充当非常强大的linter。

强调原始。

PEP受到使用PEP 3107注释的现有工具的启发;特别是mypy项目(通过采用PEP
484循环返回),还包括PyCharm IDE和pytypedecl项目中的类型提示支持。请参阅Guido van
Rossum发动这项工作的原始电子邮件以及后续电子邮件。

mypy显然可以通过预处理注释来支持Python 2,在为源字节进行字节编译之前将其删除,但是通常您不能使用本来可以在Python
2中使用的语法Python代码。

PEP 484还描述了存根文件的使用,该存根文件位于常规Python文件的旁边。它们使用

.pyi
扩展名,并且仅包含签名(带有类型提示),而使主
.py
文件注释自由,因此可以在Python
2上使用(前提是您另外编写了Polyglot Python代码)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/641323.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号