首页
学习
活动
专区
圈层
工具
发布

mypy 这个工具,让Python的类型提示变得非常实用

后续开发的过程中可以强制 mypy 检查无误后才能上线,借此提高代码的可读性和可维护性。 嗯,很实用,不是吗?下面分享一下如何使用 mypy。...3、常用的内置类型 4、配置文件 mypy 将依次查找当前目录下配置文件 mypy.ini .mypy.ini pyproject.toml setup.cfg 如果还找不到,则依次寻找下面的配置文件...: $XDG_CONFIG_HOME/mypy/config ~/.config/mypy/config ~/.mypy.ini 此外,你也可以使用--config-file 指定配置文件。.../en/stable/ 常见配置项: files 逗号分隔的路径列表,如果命令行上没有给出,则应由 mypy 检查,支持递归。...plugins 逗号分隔的 mypy 插件列表 最后的话 mypy 是自动化测试中很重要的一部分,可以帮助我们检查 Python 语言的类型提示是否正确,减少代码的 bug,Python 开发的朋友们一定要用一用

1.8K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python升级之路( Lv10 ) 模块

    这样,我们可以将一个Python程序分解成多个模块,便于后期的复用 优点: 便于将一个任务分解成多个模块,实现团队协同开发,完成大规模程序 实现代码复用....我们可以根据这个特点,将模块源代码文件中的测试代码进行独立的处理. 例如 import math print(math.....py文件 已被编译为共享库或 DLL 的C或C++扩展 一组模块的包 使用C编写并链接到python解释器的内置模块 注意事项: from…import导入 基本语法格式如下:from 模块名 import...不会再执行test02模块中的语句 import mypy14_module_load # 会执行test02模块中的语句 print("####") import importlib importlib.reload...这个索引由 init.py 定义 all 变量,该变量为一个列表, 如上例 a包下的 __init__.py 中,可定义 __all__ = ["module_A","module_A2"] 四、

    1.2K20

    NumPy 1.26 中文文档(四十四)

    此外,用户还可以使用一些类型别名,其中两个最重要的如下: ArrayLike:可以转换为数组的对象 DTypeLike:可以转换为数据类型的对象 Mypy 插件 1.21 版本中的新功能。...如果不使用插件,所有扩展精度类型在 mypy 看来都对所有平台可用。 分配c_intp的(平台相关)精度。没有使用插件,类型将默认为ctypes.c_int64。...如果依赖列表中的任何路径比扩展模块更新,那么将重新构建该模块。...当使用 numpy distutils 进行交叉编译时,可能需要使用修改后的 npy-pkg-config 文件。使用默认生成的文件将链接到主机库(即 libnpymath.a)。...在使用 numpy distutils 进行交叉编译时,可能需要使用修改过的 npy-pkg-config 文件。使用默认/生成的文件将链接到宿主库(即 libnpymath.a)。

    65510

    NumPy 1.26 中文文档(五十七)

    #20295: BUG: 不要在非对齐数组上使用非零快速路径 #20296: BUG: Distutils 补丁,允许将 2 作为次要版本号 (!)...#20295: BUG: 不要在非对齐数组上使用非零快速路径 #20296: BUG: Distutils 补丁,允许将 2 作为次要版本号 (!)...相反,这些环境变量中的链接标志将直接使用,并且语言被假定为 F77。这在已明确知道已安装的 BLAS 和 LAPACK 的自动化构建中特别有用。...__init__.py中的拼写错误 #18326:BUG:在遍历过程中不要改变假库列表… #18327:维护:优雅地洗牌 memoryviews #18328:BUG:使用 C 链接来在随机分布中...__init__.py中的拼写错误 #18326:BUG:不要在遍历过程中改变假库列表… #18327: MAINT: 优雅地洗牌 memoryviews #18328: BUG: 为随机分布使用

    1.2K10

    SqlAlchemy 2.0 中文文档(三十一)

    可以使用 pip 使用“mypy”额外钩子安装 Mypy: pip install sqlalchemy[mypy] 插件本身如 Configuring mypy to use Plugins 中描述的那样配置...,使用 sqlalchemy.ext.mypy.plugin 模块名,例如在 setup.cfg 中: [mypy] plugins = sqlalchemy.ext.mypy.plugin 插件功能...,列在 _mypy_mapped_attrs 中的属性将应用 Mapped 类型信息,以便在类绑定上下文中使用 User 类时,它将表现为一个 SQLAlchemy 映射类。...可以使用 pip 使用 “mypy” extras 钩子安装 Mypy: pip install sqlalchemy[mypy] 插件本身配置如 配置 mypy 使用插件 中所述,使用 sqlalchemy.ext.mypy.plugin...,列在_mypy_mapped_attrs中列出的属性将应用于Mapped类型信息,以便在类绑定上下文中使用User类时,它将表现为一个 SQLAlchemy 映射类。

    1.4K20

    【Python】动态与静态的较量:深入探讨Python的动态类型机制与类型提示的应用

    在大量示例代码中,我们将展示如何通过类型提示减少错误,提升开发效率,确保项目在开发过程中的安全性与稳定性。...同时,本文将通过代码片段与中文注释,帮助读者理解如何在Python项目中使用mypy实现动态与静态类型的平衡。...这种声明在开发工具(如IDE)中可以显示类型信息,帮助开发者更好地理解代码。 使用类型提示的好处 可读性提高:类型提示让代码的意图更加清晰,特别是在大型项目中,能够快速了解变量和函数的用途。...安装与基本使用 mypy可以通过pip安装: pip install mypy 安装完成后,可以在命令行使用mypy来检查文件: mypy example.py 在代码文件中加入类型提示后,mypy...,并返回同类型的列表。

    53510

    可维护的Python代码库的7条规则

    例如,我们可以添加一个常量到一个 numpy 数组中;Python 处理了所有的复杂性。...当你开始使用mypy,或者当你尝试将一个未类型化的代码库转换为类型化的代码库时,你会遇到很多bug。...你可以把mypy作为一个独立的程序来使用,但是更舒适的使用方法是把它作为一个插件嵌入到你的编辑器中,这样你在写代码的时候就可以得到实时的反馈。至于如何使用,可以自行搜索。...然而,在规则 2 中建议使用 mypy,它会不兼容的重载[10]。 可以尝试用组合[11](表示 "有" 关系)代替继承(表示 "是" 关系)。...将参数分组到某个集合类中可以避免这种情况,但这样就必须编写逻辑来实例化参数对象。尽管如此,长长的输入参数列表仍然难以推理。 用 Python 创建纯函数有两种方法: 在类之外定义。

    51930

    python类型检测最终指南--Typing的使用

    对于这些情况,有一些特殊的Mypy表达式:reveal type()和reveal local()。您可以在运行Mypy之前将这些添加到您的代码中,Mypy将报告它所推断的类型。...,并且它们都使用方括号来定义项的类型: names 是一个str类型的list数组。...列表是可变序列,通常由未知数量的相同类型的元素组成,例如卡片列表。无论列表中有多少元素,注释中只有一种类型:List [t]。 在许多情况下,你的函数会期望某种顺序,并不关心它是列表还是元组。...会正确推断名称是字符串列表,但由于使用了任意类型,在调用choose ( )后,该信息会丢失: $ mypy choose.py choose.py:10: error: Revealed type is...您知道如果将一个字符串列表传递给choose(),它将返回一个字符串。 类型变量 类型变量是一个特殊变量,可以采用任何类型,具体取决于具体情况。

    5.4K10

    Python类型注解:让代码“开口说话”的隐形助手

    这段代码中,name: str明确表示参数应为字符串,age: int表示整数,-> str则标注了返回值类型。...def calculate_distance(coords: Coordinates) -> float: # 计算坐标列表中两点间的总距离 pass5....静态检查工具:mypy的“类型防火墙”安装mypy后,可通过命令行检查代码:mypy your_script.py配置mypy.ini文件可自定义检查规则,例如:[mypy]ignore_missing_imports...过度使用Any类型:削弱类型检查优势from typing import Any def process(data: Any) -> Any: return data # 失去类型检查意义应尽量使用具体类型或联合类型替代...它通过显式标注类型信息,让代码更易读、更健壮,同时借助静态检查工具将错误拦截在开发阶段。无论是个人项目还是团队协作,合理使用类型注解都能显著提升开发效率与代码质量。

    42310

    Python开发者必备6个基本库

    由于具有易于使用的优势,Python在各个行业和学科中都有着广泛的应用。也因此得到了大量第三方项目的支持–库、组件和开发套件,这些项目将Python的应用领域不断的扩大。...PyInstaller 3.3特点 PyInstaller将Python应用程序打包为单个目录或单个文件可执行文件中,将需要的第三方库与其一起打包,并与绝大多数公共库和框架配合使用。...PyInstaller 3.3下载地址 PyInstaller可以从Python包索引中安装,也可以使用Python的pip工具安装:pip install pyinstaller。...PBR最初是作为OpenStack项目的一部分开发的,但是您使用PBR维护的内容不得以任何方式连接到OpenStack。...Mypy 0.530下载地址 Mypy可以在Python包索引中使用,并且可以使用pip install mypy命令安装。

    1.8K10

    流畅的 Python 第二版(GPT 重译)(四)

    例如,为了创建一个韵典,将每个单词倒着拼写可能很有用。在示例 7-4 中,请注意列表中的单词根本没有改变;只有它们的反向拼写被用作排序标准,以便浆果出现在一起。 示例 7-4....构建一个阶乘列表。 ② 使用列表推导式进行相同的操作。 ③ 列出了奇数阶乘数的列表,直到 5!,同时使用map和filter。...⑥ 再次使用 attrgetter 按纬度对城市列表进行排序。 ⑦ 使用 ⑤ 中定义的 attrgetter 仅显示城市名称和纬度。...使用与之前相同的命令行检查 messages_test.py 将导致 Mypy 再次查看 messages.py: …/no_hints/ $ mypy --disallow-incomplete-defs...截至 Python 3.10,目前还没有很好的方法来注释 array.array,考虑到 typecode 构造参数,该参数确定数组中存储的是整数还是浮点数。

    91910

    如何创建修改远程仓库 + 如何删除远程仓库 + 如何删除远程仓库中的某个文件或文件夹 + 如何使用git将本地仓库连接到多个远程仓库

    但是,建议:   GitHub(国外)使用邮箱为:xxxxxx@gmail.com(为了装逼)   Gitee码云(国内)、Coding(国内)使用国内邮箱:如QQ邮箱、163邮箱等等。...四、将远程仓库Clone(下载/复制)到本地 注意1:演示我们使用连接仓库的客户端软件是:Git Bash 注意2:演示我们使用连接仓库的方式是:https 1、远程仓库地址的由来如下: ?...五、将本地仓库Push(同步/上传)到远程服务器 1、为了演示,我们先在本地仓库DemoUseGithub中新建一些文件夹和文件 ? 2、将本地仓库Push(同步/上传)到远程服务器 ?...六、删除Github中已有的仓库中的某个文件或文件夹(即删除远程仓库中的某个文件或文件夹) 我们知道,在Github上我们只能删除仓库,并不能删除文件或者文件夹,所以只能用命令来解决。...七、如何使用git将本地仓库连接到多个远程仓库 1、先在GiuHub(国外)、Gitee码云(国内) 和 Coding(国内) 上分别新建一个远程仓库,参考“二、创建远程仓库”。

    9.3K21

    @程序员:Python 3.8正式发布,重要新功能都在这里

    ID += 1 Mypy将突出显示行ID + = 1,并请注意你无法将其分配给最终名称“ ID”。这可以确保代码中的常量值永远不变。 此外,还有一个@final装饰器,可以将其应用于类和方法。...使用files(),可以获得构成pip包的所有文件的清单。本例中约有700个文件。 files()返回Path对象的列表。你可以使用read_text()方便地查看软件包的源代码。...当你把因素存储在可迭代对象中时,prod()将更易于使用。 另一个新功能是math.isqrt()。...请注意,本例中,isqrt()将答案截断为下一个整数。 最后,现在你可以更轻松地使用标准库中的n维点和向量。...该列表在Python 3.8中使用的内存比Python 3.7少了大约11%。

    2.7K20

    Python 函数返回值别漏标!显式声明 None 的 3 大好处

    举个实际例子:先安装mypy(用 pip 就行,代码能直接运行):pip install mypy然后写两个函数,一个显式标了-> None,一个没标,看看mypy的反应:# 函数1:显式声明返回None...;显式声明-> None的作用是 “提醒使用者”:list.sort()只改原列表,别指望从它那拿返回值,避免新手赋值用的错误。...回答:问题:静态类型检查工具(比如 mypy)会报错,提示 “返回值类型不匹配”;而且别人用的时候会误以为函数返回 int,赋值后发现是 None,导致 bug;解决:把类型注解改成-> None,明确告诉工具和使用者...回答:先写函数:def remove_duplicates(lst: list) -> None: """原地去除列表中的重复元素(保持第一次出现的顺序)""" # 用临时集合存已出现的元素,遍历列表修改...),不返回新列表,所以显式标-> None,告诉使用者别赋值;显式标注后,静态检查工具能帮着检查 —— 如果不小心在函数里加了return lst,工具会报错,避免返回值类型不对;别人看声明就知道函数是

    19910

    Python 3.8已正式发布,重要新功能都在这里了

    ID += 1 Mypy将突出显示行ID + = 1,并请注意你无法将其分配给最终名称“ ID”。这可以确保代码中的常量值永远不变。 此外,还有一个@final装饰器,可以将其应用于类和方法。...使用files(),可以获得构成pip包的所有文件的清单。本例中约有700个文件。 files()返回Path对象的列表。你可以使用read_text()方便地查看软件包的源代码。...当你把因素存储在可迭代对象中时,prod()将更易于使用。 另一个新功能是math.isqrt()。...请注意,本例中,isqrt()将答案截断为下一个整数。 最后,现在你可以更轻松地使用标准库中的n维点和向量。...该列表在Python 3.8中使用的内存比Python 3.7少了大约11%。

    3.3K51

    NumPy 1.26 中文文档(五十八)

    下表显示了被弃用别名的完整列表,以及它们的确切含义。用第一列中的项目替换为第二列的内容将完全相同,并且可以消除弃用警告。 第三列列出了偶尔更好的替代 NumPy 名称。...并链接到 mypy.ini 这两个选项都有点不方便,因此添加一个 --mypy 选项来运行测试,它会帮助为你设置一切。...下表显示了所有已弃用别名的完整列表,以及它们的确切含义。将第一列中的项目替换为第二列的内容将产生相同效果,并消除弃用警告。 第三列列出了有时可能更优选的替代 NumPy 名称。...目前,配置 NumPy 存根运行 mypy 需要: 安装 NumPy 将源目录添加到 MYPYPATH 并链接到mypy.ini 这两个选项都有点不方便,因此在 runtests 中添加一个...(gh-16594) 可以通过 runtests.py 运行 mypy 测试 当前运行带有 NumPy 存根配置的 mypy 需要: 安装 NumPy 将源目录添加到 MYPYPATH 并链接到

    1.9K10
    领券