【PEP 484】什么是.pyi文件?

2023-05-16

在PyCharm中查看源代码的时候,发现有些代码行有星号(*)标识,鼠标移上去会提示在某个.pyi文件中有其存根程序,点击星号会跳转到对应的存根程序处。

 那什么是存根程序呢?

我第一次看到这个概念是在软件工程的书里,它主要就是用来做集成测试的。比如下图中M是实际开发出来的模块,S就是存根程序(一个临时文件,用来模拟实际的模块,向要测试的模块发送它们需要的消息)。这样的好处就是可以逐步完成整个大项目的测试。

 那么在我这个例子的Python源码中,.pyi存根文件起到了什么作用呢?

在网上查询的时候,有人推荐了PEP 484文档。484中的原话是这样的:

This PEP introduces a provisional module to provide these standard definitions and tools, along with some conventions for situations where annotations are not available.

简言之,484提供了临时性的一个模块(即存根文件),对一些目前注解没有明确定义的地方给出自己的补充。

我个人理解484整体目的就是为了帮助用户进行类型检查。Python本身是动态语言,不像静态语言可以在编译的时候进行类型检查,所以484通过这种存根文件、注解这些东西可以辅助用户在编写代码时给出建议的类型提示,不仅可以用IDE更快速地进行开发,还能减少运行时的类型报错。例如:

1)因为在.pyi文件中有相关类型定义,所以在敲代码时会出现提示。

2)如果输入类型与.pyi冲突,IDE的Type checker会给出警告信息,减少类型报错。

注意: ①.pyi文件只针对Type checker有用;②Type checker的设置是可以自己修改的,比如修改类型报错等级,或是对此根本不进行类型检查等等(如下图)

 

怎么使用.pyi文件呢?

举个简单的例子:

自定义一个类,其中的年龄属性要求初始化的数据为整数。

module1.py:

class A:
    def __init__(self, age):
        self.age = age

module1.pyi:

class A:
    def __init__(self, age : int = ...) -> None: ...

当初始化对象的年龄为float时,出现警告信息,提示应为int类型: 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【PEP 484】什么是.pyi文件? 的相关文章

随机推荐

  • MATLAB中subs函数

    subs函数 1 将变量x替换为数值1 xff1a subs S x 1 2 将变量x替换为变量z xff1a subs S x z 3 同时将变量x和y分别替换为1和z xff1a subs S x y 1 z 4 将单变量替换为数组 x
  • LQR线性二次型调节器3(Discrete-time system Linear-Quadratic Regulator design,离散系统分析及MATALB实例)

    离散系统线性二次型调节器 xff0c dlqr函数 xff0c dare函数 一 离散时间系统二次型优化 xff1a dlqr 函数1 1 MATLAB函数形式1 2 举例 xff1a 二 离散时间系统李卡提方程求解函数 xff1a dar
  • 彻头彻尾理解JVM系列之八:Java代码是如何被CPU狂飙起来的?

    大家好 我是慕枫 前阿里巴巴高级工程师 InfoQ签约作者 阿里云专家博主 一直致力于用大白话讲解技术知识 在这里和大家分享一线互联网大厂面试经验 技术人成长路线以及Java技术 分布式 高并发 架构设计方面的经验总结 感恩遇见 希望我们都
  • 最优控制理论(一)基本概念

    1 概念 在军事 航空航天 导航制导 生产 经济活动以及人类其他有目的的活动中 xff0c 常需要对被控系统 被控过程施加某种控制作用 xff0c 使某个性能指标达到最优 xff0c 这种控制作用称为最优控制 使控制系统的性能指标实现最优化
  • ROS学习笔记--cv_bridge

    cv bridge是在ROS图像消息和OpenCV图像之间进行转换的一个功能包 一 xff09 在ROS图像和OpenCV图像之间转换 xff08 C 43 43 xff09 xff11 xff0e Concepts xff08 概念 xf
  • stm32+esp8266+onenet (MQTT)

    使用stm32采集温湿度 MQ2的数值用过 esp8266 43 mqtT协议把数据传输给onenet平台 并且能通过onenet下发指令控制led灯的亮灭 打开onenet平台 xff0c 使用旧版MQTT协议 xff0c 选择多协议接入
  • Hadoop The Definitive Guide:Hadoop权威指南-PART 1

    简介 xff1a Hadoop起源于Nutch 当人们试图构建一个开源网络搜索引擎 xff0c 但在管理在少数计算机上运行的计算时遇到了麻烦 后来Google发表了GFS和MapReduce相关介绍 xff0c 路线就变得清晰了 他们设计了
  • 【计算机图形学】绘制一个基于GDI的图形程序

    这学期选修了计算机图形学这门课 xff0c 该合集用来记录课程所学知识 概念类的内容来自于百度文库 xff1a https wenku baidu com view c3c5b36048d7c1c708a145a2 html 概念介绍 GD
  • Ubuntu 18.04 安装无人机开发环境 PX4+ROS+Gazebo

    Ubuntu 18 04 安装无人机开发环境 PX4 43 ROS 43 Gazebo 本教程基于纯净的Ubuntu 18 04 配置上述环境 由于国内网络环境问题 xff0c 无法正常从github下载文件的请用代理 代理网站 xff1a
  • docker命令详解及参数作用

    下载镜像 docker pull 镜像名 标签 查看本地镜像 docker images 删除镜像 xff1a docker rmi 镜像名 标签 启动容器 docker run d name 61 mynginx resrart 61 a
  • Mac sourcetree连接gitee码云仓库

    一 复制自己的ssh key 添加到gitee的ssh 共钥中 二 添加后 xff0c 在终端输入 ssh T git 64 gitee com gt gt 出现下面的successfully就代表关联成功了 三 sourcetree中选择
  • 路径规划与避障算法(一)---DWA算法概述

    版权声明 xff1a 本文为博主原创文章 xff0c 转载请联系博主 https mp csdn net mdeditor 82764989 DWA 动态窗口算法 算法概述 算法原理可见 https blog csdn net heyiji
  • 路径规划与避障算法(七)---DWA算法流程之三---碰撞检测评价函数

    版权声明 xff1a 本文为博主原创文章 xff0c 原创不易 转载请联系博主 本篇博客主要介绍DWA算法所采用的评价函数中障碍物相关的评价函数 评价函数 轨迹主要依据以下三条准则进行评分 综合评分后选取分数最小的路径作为下一时刻选择路径
  • 彻头彻尾理解JVM系列之九:不会JVM调优怎么进互联网大厂

    大家好 我是慕枫 前阿里巴巴高级工程师 InfoQ签约作者 阿里云专家博主 一直致力于用大白话讲解技术知识 在这里和大家分享一线互联网大厂面试经验 技术人成长路线以及Java技术 分布式 高并发 架构设计方面的经验总结 感恩遇见 希望我们都
  • CVPR代码和论文链接目录大全

    最新 xff01 CVPR 2021 语义分割论文大盘点 xff08 39篇论文 xff09 xff1a https blog csdn net amusi1994 article details 118426626 CVPR代码和论文链接
  • Ubuntu 桌面被删除,恢复

    step1 在桌面上打开终端 xff0c cd 到自己的home文件夹 step2 ls la 出现隐藏的文件及文件夹 step3 找到 config文件夹中的user dirs dirs 如图 图是找的图片 将最后vim user dir
  • 在Linux中编译带有自己编写的头文件的C程序

    有三个文件callback c xff0c callback h xff0c demo c 其中callback h是自己编写的头文件 在Linux中编译运行demo c的时候注意也要编译callback c文件 xff0c 否则会报错 引
  • Anaconda和TensorFlow开发环境搭建

    参考链接 xff08 MOOC大学 深度学习应用开发 TensorFlow实践 第二讲 xff09 xff1a https www icourse163 org course ZUCC 1206146808 一 Anaconda下载 官网下
  • 【wxPython导入失败】Failed building wheel for wxPython

    导入包wxPython失败 xff1a Failed building wheel for wxPython 错误原因 xff1a 根据错误提示发现我的电脑上有两个版本的Python xff0c 一个是最开始学Pyhton的时候装的3 7版
  • 【PEP 484】什么是.pyi文件?

    在PyCharm中查看源代码的时候 xff0c 发现有些代码行有星号 标识 xff0c 鼠标移上去会提示在某个 pyi文件中有其存根程序 xff0c 点击星号会跳转到对应的存根程序处 那什么是存根程序呢 xff1f 我第一次看到这个概念是在