0

0

MyPy简介

WBOY

WBOY

发布时间:2024-08-12 12:09:49

|

791人浏览过

|

来源于dev.to

转载

mypy简介

介绍

mypy1python 的静态类型检查器。与 c++ 或 java 等静态类型语言不同,python 是动态类型的。这意味着在 python 中,您不必显式声明变量的类型;它是在运行时推断的。例如:

python(动态类型)

num = 4                # `num` is inferred as an integer
newstring = "new string"  # `newstring` is inferred as a string

相反,静态类型语言要求您在编译时指定每个变量的类型。这有助于在开发期间而不是运行时捕获与类型相关的错误。

c++(静态类型)

int num = 4;            // `num` is declared as an integer
std::string newstring = "new string";  // `newstring` is declared as a string

为什么使用 mypy?

在python等动态类型语言中,运行时可能会发生类型错误,这可能会导致更难以追踪的错误。 mypy 通过允许您向 python 代码添加类型提示来解决这个问题,这些提示可以在执行前进行静态检查。这有几个优点:

  • 早期错误检测:在开发过程中识别与类型相关的错误,而不是在运行时遇到它们。
  • 提高代码可读性:类型提示阐明了变量和函数参数的预期类型,增强了代码可读性。
  • 更好的 ide 支持:在支持类型提示的 ide 中提供改进的代码完成和内联文档。

mypy 的示例

这是一个简单的示例,演示了 mypy 中类型提示的使用:

没有类型提示

def add(a, b):
    return a + b

print(add(5, 3))      # output: 8
print(add("hello", "world"))  # output: helloworld

在上面的代码中,add 函数可以接受整数和字符串,这可能不是预期的行为。

带类型提示

def add(a: int, b: int) -> int:
    return a + b

print(add(5, 3))      # output: 8
# mypy will report an error for the following line:
# print(add("hello", "world"))  # typeerror: expected int, got str

通过包含类型提示(a: int, b: int),您可以指定 add 只适用于整数。 mypy 根据这些类型提示检查代码,尽早发现潜在的类型相关问题。

安装并运行 mypy

开始使用 mypy:

  1. 安装:使用pip安装mypy:
   python3 -m pip install mypy
  1. 运行 mypy :安装后,您可以运行 mypy 来检查代码是否存在类型错误。使用以下命令:
   mypy program.py

此命令将静态检查您的代码,类似于编译器检查 c++ 语法的方式。它会报告它发现的任何类型错误,而无需实际运行代码。

有效使用 mypy 可以让您将静态类型的优点集成到 python 中,同时仍然享受其动态特性的灵活性。

让我们用 mypy 编写一个示例

没有 mypy

def greeting(name):
    return 'hello ' + name

# these calls will fail when the program runs, but mypy will not report an error
greeting(123)
greeting(b"aniket")

使用 mypy

通过添加类型注释(也称为类型提示),mypy 可以检测潜在的问题:

def greeting(name: str) -> str:
    return 'Hello ' + name

greeting(3)         # mypy will report: Argument 1 to "greeting" has incompatible type "int"; expected "str"
greeting(b'Alice')  # mypy will report: Argument 1 to "greeting" has incompatible type "bytes"; expected "str"
greeting("World!")  # No error

这里:

HTML+CSS图片简介排版样式
HTML+CSS图片简介排版样式

HTML+CSS图片简介排版样式是一款实用的图片简介排版效果,适配多种网页。

下载
  • name: str 注释指定 name 参数应该是一个字符串。
  • -> str注释指定函数greeting将返回一个字符串。

何时使用 mypy

mypy 在多种情况下很有用:

  • 尽早捕获错误:在运行代码之前使用 mypy 查找与类型相关的错误。这有助于及早发现错误并提高代码可靠性。

  • 使代码更清晰:添加类型提示使您的代码更易于理解。它显示了期望的值类型,这有助于其他人(以及未来的自己)更好地理解您的代码。

  • 升级旧代码:更新旧代码时,mypy 在添加类型提示时帮助发现类型问题,使过渡更顺畅。

  • 改进原型:构建新功能或原型时,mypy 通过强制执行类型规则来帮助确保新代码与现有代码正确配合。

  • 维护大型项目:在有许多贡献者的大型项目中,mypy 有助于保持代码一致性并防止与类型相关的错误。

  • 增强 ide 功能:如果您使用 ide,mypy 改进了代码完成和导航等功能,使开发更容易。

使用 mypy 可以帮助您编写更好、更可靠的 python 代码,同时仍然享受 python 的灵活性。

mypy 的官方快速备忘单


  1. 官方文档↩

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

340

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

416

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

761

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

351

2025.07.23

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

340

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

212

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1503

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

625

2023.11.24

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

54

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 3.7万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号