MyPy简介

2024-08-12 0 145

MyPy简介

介绍

mypy1 是 c++olor:#f60; text-decoration:underline;’ href=”HTTPs://www.php.cn/zt/15730.html” target=”_blank”>Python静态类型检查器。与 c++ 或 Java静态类型语言不同,python 是动态类型的。这意味着在 python 中,您不必显式声明变量的类型;它是在运行时推断的。例如:

python(动态类型)

1

2

num = 4                # `num` is inferred as an integer

newstring = "new string"  # `newstring` is inferred as a string

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

c++(静态类型)

1

2

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 中类型提示的使用:

没有类型提示

1

2

3

4

5

def add(a, b):

    return a + b

print(add(5, 3))      # output: 8

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

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

带类型提示

1

2

3

4

5

6

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:

1

python3 -m pIP install mypy

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

1

mypy pROGram.py

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

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

让我们用 mypy 编写一个示例

没有 mypy

1

2

3

4

5

6

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 可以检测潜在的问题:

1

2

3

4

5

6

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

这里:

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

何时使用 mypy

mypy 在多种情况下很有用:

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

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

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

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

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

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

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

mypy 的官方快速备忘单

 

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

免责声明
1. 本站所有资源来源于用户上传和网络等,如有侵权请邮件联系本站整改team@lcwl.fun!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系本站工作人员处理!
6. 本站资源售价或VIP只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 因人力时间成本问题,部分源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别!
9.本站所有源码资源都是经过本站工作人员人工亲测可搭建的,保证每个源码都可以正常搭建,但不保证源码内功能都完全可用,源码属于可复制的产品,无任何理由退款!

网站搭建学习网 Python MyPy简介 https://www.xuezuoweb.com/11451.html

常见问题
  • 本站所有的源码都是经过平台人工部署搭建测试过可用的
查看详情
  • 购买源码资源时购买了带主机的套餐是指可以享受源码和所选套餐型号的主机两个产品,在本站套餐里开通主机可享优惠,最高免费使用主机
查看详情

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

Fa快捷助手
手机编程软件开发

在手机上用手点一点就能轻松做软件

去做软件
链未云主机
免备案香港云主机

开通主机就送域名的免备案香港云主机

去使用
链未云服务器
免备案香港云服务器

支持售后、超低价、稳定的免备案香港云服务器

去使用