你知道静态类型的Python吗?

Python中的类型注解和静态类型检查使用详解 Python作为一种动态类型语言,其灵活性和易用性使其广受欢迎。然而,动态类型也带来了一些问题,如代码可读性差和运行时错误等。为了提高代码质量和可维护性,Python从3.5版本开始引入了类型注解(Type Hints),并且借助第三方工具可以实现静态类型检查。本文将详细介绍Python中的类型注解和静态类型检查的概念、用法及其优点,并通过具体的示例代码展示如何在实际项目中应用。 阅读详情

众所周知,python是一种动态类型语言,但是,从v3.6版本开始,开始支持静态类型的写法。

了解python的静态类型,有助于我们封装更加可靠和易于维护的工具和库。
在这里插入图片描述

动态和静态类型

动态和静态类型本来是区分语言种类的一个指标,
动态和静态语言各有优势和适用的场景,不能说那个一定比另一个好。

选择静态类型或动态类型语言应根据具体的需求和情况进行权衡和评估。
在实际开发中,也可以根据项目的需要选择不同的语言进行组合使用,以充分发挥各语言的优势。

动态语言优劣点

动态语言的优势主要有:

  1. 灵活性和简洁性:动态类型语言不要求显式声明变量的类型,可以根据上下文自动进行类型推断,简化了代码的编写和理解。
  2. 更少的代码量:动态类型语言的代码通常比静态类型语言更简洁,减少了代码量和开发时间。
  3. 更少的类型转换:由于动态类型语言在运行时进行类型检查和类型转换,可以自动进行一些类型转换,减少了开发者手动转换类型的工作。

动态语言的劣势主要有:

  1. 容易出现隐式类型转换错误:由于动态类型语言在运行时进行类型转换,可能会出现一些隐式的类型转换错误,增加了调试的难度和成本。
  2. 可读性和可维护性较差:动态类型语言中,变量的类型信息不够明确,代码可读性和可维护性较差,增加了代码理解和维护的难度。

静态语言的优劣点

静态类型语言的优势主要有:

  1. 更严格的类型检查:静态类型语言要求变量在使用之前必须声明其类型,并在编译时进行类型检查,可以避免一些常见的类型错误,提高代码的可靠性。
  2. 更早的错误检测:由于静态类型语言在编译时进行类型检查,可以在代码运行之前捕获一些潜在的错误,减少调试时间和成本。
  3. 更好的可读性和可维护性:静态类型语言中,变量的类型信息更加明确,代码更易于理解和维护,减少了开发者之间的沟通成本。

静态类型语言的劣势主要有:

  1. 代码量较大:由于需要显式声明变量的类型,静态类型语言的代码量通常较大,增加了代码的复杂度和开发时间。
  2. 程序员需要更多的类型知识:使用静态类型语言需要对类型系统有一定的了解,并且需要花费更多的时间来处理类型转换和类型检查。

python静态类型

根据经验,一般偏底层或算法的应用会用静态语音来编写,偏应用层或者脚本的应用会用动态语言来编写。

如今,python可以支持静态类型的方式来编写代码,必然能够让它的应用范围进一步扩大。

静态类型语法

变量定义:

variable_name: type

复合类型:

from typing import Dict, List, Tuple

函数定义:

def function_name(param: type)-> return_type:

静态类型示例

一般变量示例:

i: int = 1
s: str= "abc"

print(i, s)
#运行结果:
1 abc

复合类型示例:

from typing import Dict, List, Tuple

numbers: List[int] = [1, 2, 3, 4, 5, 100]

numbers_dict: Dict[str, int] = {
    "one": 1,
    "two": 2,
    "three": 3,
    "four": 4,
    "five": 5,
    "hundred": 100,
}

multi_type_tuple: Tuple[str, int, bool] = ("one", 1, False)

print(numbers)
print(numbers_dict)
print(multi_type_tuple)
#运行结果:
[1, 2, 3, 4, 5, 100]
{'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'hundred': 100}
('one', 1, False)


函数示例:

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

print(sum(10, 20))
#运行结果:
30

静态类型检查

python本质上毕竟还是动态语言,虽然支持按照静态类型的语法写代码,
但是代码执行时还是以动态类型的方式去运行的。

比如下面的示例(test.py):

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

print(sum(10, 20))
print(sum("10", "20")) # 你的IDE也许会提示类型错误, 但是仍然可以执行
#运行结果:
30
1020

上面的代码也许会提示类型错误(根据你的IDE配置情况来看),
但是执行还是可以执行,这样,我们静态类型的写法就没有意义了。

我们的原意是希望像静态类型语言一样,在实际执行前检查类型是否合法。
这时,我们可以使用mypy 工具来检查我们代码中的类型情况。

pip install mypy

简单封装一个检查类型的脚本(check_run.py):

import subprocess
import sys

def type_check(script):
    output = subprocess.run(['mypy', script], stdout=subprocess.PIPE).stdout
    return output.decode('utf-8')

def run(script):
    output = subprocess.run(['python3.6', script])

if __name__ == '__main__':
    script = sys.argv[1]
    mypy_output = type_check(script)

    if mypy_output != '':
        print(mypy_output)
    else:
        run(script)

用上面的 test.py 作为测试脚本,默认执行:

$ python ./test.py
30
1020

加上检查类型的功能,mypy会帮助我们检查出来代码中的类型问题:

$ python check_run.py test.py
test.py:9: error: Argument 1 to "sum" has incompatible type "str"; expected "int"  [arg-type]
test.py:9: error: Argument 2 to "sum" has incompatible type "str"; expected "int"  [arg-type]
Found 2 errors in 1 file (checked 1 source file)

总结

python中加入静态类型,让我们写代码时多了一个选择,并不是一定要用这种静态类型的写法。
我们之前使用python的方式仍然有效的。

我想,主要原因还是在于python中已经应用在很多严谨的数值计算方面,
特别是在人工智能兴起之后,python也随之大放异彩,逐渐渗透到一些底层的场景中。

这时,对python的稳定性和可维护性的要求远远大于其易用性了,所以,才会开始支持这种静态类型语言的写法。

---------------------------END---------------------------

题外话

当下这个大数据时代不掌握一门编程语言怎么跟的上时代呢?当下最火的编程语言Python前景一片光明!如果你也想跟上时代提升自己那么请看一下.

在这里插入图片描述

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。


👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

👉优快云大礼包🎁:全网最全《Python学习资料》免费赠送🆓!(安全链接,放心点击)

若有侵权,请联系删除

Python静态类型解析工具简介和实践 简介:Python是一门强类型的动态类型语言,开发者可以给对象动态指定类型,但类型不匹配的操作是不被允许的。动态类型帮助开发者写代码轻松愉快,然而,俗话说:动态一时爽,重构火葬场。动态类型也带来了许多麻烦,如果动态语言能加入静态类型标记的话,会有什么好处呢?本文将主要介绍Python对静态类型的支持、社区发展的现状、类型检查工具介绍与对比,以及类型解析的实战。 作者 | 别象 来源 | 阿里技术公众号 一 背景 Python是一门强类型的动态类型语言,开发者可以给对象动态指定类型(动态),但类型. 阅读详情

相关推荐

深度解析:Python中的类方法、实例方法与静态方法

本文将通过详细的理论讲解和实际案例分析,带你深入了解这三种方法的区别与应用场景,帮助你写出更加简洁、高效和可维护的Python代码。在Python中,类(Class)是面向对象编程的核心,而方法是类中定义行为的主要方式。在实际开发中,根据需求选择合适的方法类型,不仅可以提升代码的可读性,还能增强代码的复用性和可维护性。它们的定义、调用方式以及适用场景各不相同,如何正确理解并使用这些方法是深入学习Python的关键。实例方法是类的最常见方法,通过在类中定义并传入。是一个纯工具方法,与类的实例和属性无关。

fudaihb的博客 1823

Python中的静态类变量和方法

如何在 Python 中创建静态类变量或方法?

HuntsBot的博客 6992

Python类中静态方法的深入解析

在 Python 类定义中,除了常规的实例方法,还有两种特殊的方法:类方法和静态方法。此外,静态方法可以从类中访问,而不必实例化类,并且可以将它们作为参数传递或从中返回。需要注意的是,静态方法并不需要访问该类的状态或实例的状态,因此更像是一种工具函数。另外,我们还可以从类中访问静态方法,而不必实例化类,并且可以将静态方法作为参数传递或从中返回。定义一个静态方法后,它可以被包含该方法的类和该类的实例对象调用,但是它和其他实例方法不同,没有隐式的。总结来说,静态方法是 Python 类的一种特殊类型的方法。

与其临渊羡鱼,不如退而结网 289

Python静态方法和类方法详解

理解这三种方法的区别对于编写清晰、组织良好的Python代码非常重要。正确使用它们可以使你的代码更加模块化,逻辑更加清晰,同时也能更好地表达你的设计意图。

qq_44815135的博客 1008

python之类的静态方法

  Python 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的理想语言。下面我们来介绍一下python的类的静态方法。  要在类中使用静态方法,需在类成员方法前加上“@staticmethod”标记符,以表示下面的成员方法是静态方法。使用静态方法的好处是,不需要实例化对象即可使用该方法。  静态方法可以不带任何参数,由于静态方法没有self参数,所以它无法访问类的实

jiankang66的博客 6331

T265摄像头插着开机后,需要重新插拔才能正常启动

T265摄像头插着开机后,需要重新插拔才能正常启动

qq_35598561的博客 1080

类型注解写还是不写?92%的Python团队正在忽略的静态类型4大隐性收益,现在知道还不晚

Python类型系统教程帮你破解类型注解取舍难题,揭示静态类型在代码可维护性、协作效率、错误拦截和IDE智能提示四大隐性收益。适用于中大型项目与团队开发,通过mypy+类型注解实践落地。92%团队尚未重视,现在掌握正当时,值得收藏。

ProceSeed的博客 372

Win10下Altera USB-Blaster驱动安装详解:禁用数字签名与排查指南

在嵌入式开发和FPGA调试过程中,驱动安装是工程师绕不开的环节,尤其是当操作系统对驱动签名有严格限制时,硬件往往无法被正常识别。数字签名是系统验证驱动程序来源和完整性的重要机制,Win10出于安全考虑,默认拒绝加载未经签名的驱动,这正是Altera USB-Blaster下载器在设备管理器中显示未知设备或黄色感叹号的根本原因。通过理解设备管理器的排查逻辑,掌握临时禁用驱动强制签名或开启测试模式的方法,配合正确的驱动文件路径选择与手动安装操作,即可解决Quartus无法检测到下载器的问题。这一流程同样适用于许

weixin_29164497的博客 248

关于python多态介绍

随着对python理解得加深,对python中得多态又有了一些看法。首先python不支持多态,也不用支持多态,python是一种多态语言,崇尚鸭子类型。以下是维基百科中对鸭子类型得论述:在程序设计中,鸭子类型(英语:duck typing)是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由当前方法和属性的集合决定。这个概念的名字来源于由James Whitcomb Riley提出的鸭子测试,“鸭子测试”可以这样表述:“当看到一只鸟走起来像鸭子、游泳起来像鸭

xiaoweids的博客 465

(UE4 4.27) HISM性能优化:从空间剔除到合批渲染的实战解析

本文深入解析了UE4 4.27中HISM(UHierarchicalInstancedStaticMesh)组件的性能优化原理与实战技巧。核心在于利用其N叉树空间结构实现高效的CPU视锥剔除,并结合GPU实例化进行合批渲染。文章详细探讨了从控制叶子节点粒度、平衡剔除精度与渲染效率,到结合LOD系统等关键参数的调优方法,为开放世界或大场景的植被性能瓶颈提供了系统解决方案。

weixin_29015051的博客 328

告别命令行!用这个开源的Web版Kettle工具,5分钟搞定数据集成任务编排

本文介绍了一款开源的Web版Kettle工具,通过直观的拖拽界面大幅提升数据集成效率,告别复杂的命令行操作。该工具基于Kettle核心引擎,支持跨平台协作、轻量化访问和降低学习曲线,特别适合业务分析师快速上手。实测显示,使用该工具后任务配置错误率下降62%,协作效率提升40%。

weixin_30267785的博客 436

静态类型的Python

python中加入静态类型,让我们写代码时多了一个选择,并不是一定要用这种静态类型的写法。我们之前使用python的方式仍然有效的。我想,主要原因还是在于python中已经应用在很多严谨的数值计算方面,特别是在人工智能兴起之后,python也随之大放异彩,逐渐渗透到一些底层的场景中。这时,对python的稳定性和可维护性的要求远远大于其易用性了,所以,才会开始支持这种静态类型语言的写法。

程序员小麦的博客 1229

【100分】最长子字符串的长度

题目要求在一个环形字符串中找出字符 ‘o’ 出现了偶数次的最长子字符串长度。这里的字符串是一个环形的,即首尾相连。代码统计了字符串中字符 ‘o’ 的出现次数,并根据其奇偶性返回相应的最长子字符串长度。当 ‘o’ 的数量为偶数时,直接返回字符串长度;当 ‘o’ 的数量为奇数时,返回长度减去 1。给你一个字符串 s,字符串s首尾相连成一个环形 ,请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串的长度。【最长子字符串的长度】

weixin_54707168的博客 898

使用 Mypy 进行 Python 静态类型检查

介绍 Python 是一种动态类型语言。它在运行时而不是编译时确定数据类型。Python 类型的一些示例包括整数、浮点数、字符串和布尔值。动态类型语言与静态类型语言(如 C++、Java 和 Fortran)形成对比,后者在编译时执行类型检查。 动态类型语言(如 Python)的一个优点是程序员不需要为每个声明的变量指定类型。相反,Python 解释器在运行时推断并分配一个类型。与使用静态类型语言(如 Java)相比,这导致更简洁的代码可以更快地编写。 这种简洁的风格也有其缺点。因为解释器更努力地填充 Py

Xingze_Li 2105

2024年11月架构设计师案例分析真题回顾,附参考答案、解析及所涉知识点(一)

软考高级系统架构设计师考试包含三个科目:信息系统综合知识、案例分析和系统架构设计论文。考试形式为机考。本文主要回顾2024年下半年(2024-11-10)系统架构设计师考试上午第二科案例分析的题目,同时附带参考解答、解析和所涉知识点。

一几文的编程学习笔记。 2420

ARFoundation系列讲解 - 手部跟踪编程

通过使用ARFoundation的手部跟踪子系统,我们可以轻松地在AR应用程序中实现与用户手部的交互。通过设置AR环境、创建场景和相机、添加手部跟踪功能以及编写相应的脚本,我们可以开始在AR场景中跟踪和操作用户的手部。在Unity中创建一个新场景,并将AR Session组件添加到场景中的一个空对象上。手部跟踪的具体实现可能因AR设备和平台的不同而有所差异,你可能需要根据你的使用情况进行一些适配和调整。当你将手部放入AR场景中时,手部跟踪系统将触发相应的事件,并调用脚本中的回调函数。

2301_79325339的博客 358

Python 类型提示和静态类型检查

介绍 在本文中,将了解 Python 类型检查 (Type-Checking) 。 在本教程中,将了解以下内容: 类型注释和类型提示 将静态类型添加到代码中,包括你的代码和其他人的代码 运行静态类型检查器 在运行时强制类型 视频介绍如下: Python 类型提示和静态类型检查 类型系统 所有编程语言都包含某种类型系统,该系统形式化了它可以使用哪些类别的对象以及如何处理这些类别。 例如

Xingze_Li 3207

YOLOv5基于深度学习的道路缺陷检测系统

然而,由于长期的自然侵蚀、车辆磨损等因素,道路表面容易出现裂缝、坑洼等缺陷。这些缺陷不仅会影响驾驶舒适性,还可能引发交通事故,尤其是在恶劣天气或夜间行车条件下。随着人工智能技术的快速发展,基于深度学习的道路缺陷检测技术能够在降低人力成本的同时提高检测效率,为道路维护提供了新的解决方案。本项目构建了基于YOLOv5的道路缺陷检测系统,结合PyQt5开发了用户友好的UI界面,具备实时检测和图片分析功能。工具对图片进行标注,生成YOLO格式的标注文件。上传包含道路裂缝或坑洼的图片,系统会标注出缺陷的位置及类别。

YOLO 1076

python 静态类型_Python静态类型

Mypy是Python的可选静态类型检查器。您可以在Python程序中添加类型提示(PEP 484),并使用mypy进行静态类型检查。查找程序中的错误,甚至不运行它们!安装MypyMypy需要运行Python 3.5或更高版本。下面代码是用的Python 3.7 使用pip安装mypy:$ python3 -m pip install mypy看几个简单例子:平时我们代码大概都是下面的样子:#参数...

weixin_29335033的博客 895

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

Python 常用的静态类型检查器:mypy

mypy是一个流行的Python 静态类型检查器,它可以帮助你发现代码中的类型错误,而无需实际运行代码。mypy通过分析你的 Python 代码中的类型提示(type hints)来工作,这些类型提示可以是显式声明的(使用类型注解),也可以是隐式推断的。

qiy_icbc的博客 2430

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

python静态类型检查_怎样在python3.6中使用静态类型检查

动态类型是python编程中经常被抱怨的地方。这意味着你在定义一个变量时没有给定变量类型。变量的真实类型取决于变量被赋予的值。 在这个例子中, president_name 是一个string类型,因为我们使用stirng创建它的。但是python解释器直到运行了这行代码才会知道这个变量是string类型。跟python相比,java就是一个静态类型的语言。在java中要创建一个同样的变量,你必...

weixin_39565332的博客 264

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python 静态检查_python中的静态类型检查

python 静态检查Python 3.5 introduced Type Hints, a new feature that allows developers to use static type checking in python. Python 3.5引入了Type Hints ,这是一项新功能,允许开发人员在python中使用静态类型检查。 Python中的类型检查 (Type c...

weixin_26717681的博客 1032

python静态类型检查工具mypy

mypy介绍 mypy 是 Python 的一个可选静态类型检查器,旨在结合动态(或“鸭子”)类型和静态类型的优点。mypy 将 Python 的表达能力和便利性与强大的类型系统和编译时类型检查相结合。mypy 类型检查标准 Python 程序;使用任何 Python VM 运行它们,基本上没有运行时开销。 安装和使用 mypy需要python3.6+,然后使用pip直接安装即可。 pip3 install mypy 接下来就可以直接在使用mypy了,例如: mypy type_annotations.p

zy010101博客 5850

Python中的类型注解和静态类型检查

类型注解是Python 3.5引入的一种语法,用于为变量、函数参数和返回值指定类型。类型注解不会影响代码的运行,只是一种元数据,用于提高代码的可读性和可维护性,并可用于静态类型检查工具。return f"")本文详细介绍了Python中的类型注解和静态类型检查,包括类型注解的基本语法、常用类型注解、静态类型检查工具的使用以及实际应用示例。通过类型注解,可以提高代码的可读性和可维护性;通过静态类型检查,可以在开发过程中捕获潜在的类型错误,减少运行时错误。

涛哥聊Python 1188
上一篇: Python Rich:美化终端显示效果
下一篇: Python Sympy:计算微积分利器
Python_P叔
博客等级 码龄3年 5454粉丝 827原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值