当前位置:
首页
文章
后端
详情

对新手更加友好的python来了!——python3.10新特性介绍

关于python版本更新的内容,现在有了一个明确的发行计划,在去年的十月份,python3.10的一些新特性被提出。而今天,我们已经可以安装正式版python来体验这些新特性了。这些新特性包括:类型注释的进一步拓展,延迟类型注释的执行,类型注释联合操作符,带括号的上下文管理器,显式类型别名,加强版的Switch-case(python中叫match-case)语句,更友好的报错提示等。弃用了distutils 等内容。详细的内容可以前往python官网查看相关文档,这里小编主要介绍它是如何对新手更加友好的。

更友好的报错提示

很多编程语言都有一套自己的报错机制,就小编的学习经历而言,python的报错提示是比较友好的。小编学习的第一门语言是C语言,当时使用的是一代经典IDE——visual C++6.0,它在编译的时候如果代码有错误会进行报错,小编觉得vc6.0的报错是十分详细的,我们只需要根据报错的提示信息进行修改,就能把代码改好,VC6.0的优点就在于此:他的代码提示很详细。然而因为它是C语言,所以本身代码会比较难懂,这点不能赖它的报错提示,只能说C语言的报错提示像一把高手才能驾驭的宝剑,对于初学C语言,对C语言语法不够熟悉的小伙伴不太友好。

小编学习的第二门语言是java,java的报错实际上和python很相似,他们的报错都会将调用栈打印出来,我们可以顺着调用栈去一层一层的找到最终错误的地方,python的报错提示也是比较详细的。但是有编译过程的语言有一个共同的缺点:会将所有的错误都报出来。原因在于他们在编译的时候是通篇代码进行编译的,而不是想python一样逐行解释,他们会将整篇代码的错误统统都找出来,如果代码错误较少,这样的报错无伤大雅,但对于新手而言,可能写一个helloworld就能爆出七八个错误,在java里七把个报错打印出来的报错提示可以有一大页,里面还充斥着各种令人看不懂的包,新手看了直接莫名其妙。

接下来就是python,在之前版本的python报错中,其实类似于java,但是他有两点不同。第一,他比较简略,只给出了错误的原因,比如简单的提示语法错误。这对于其他报错来说是一个缺点。第二,由于python逐行解释的特点,就算一篇代码有很多错误,python也只会一个一个的报错,而不是像编译型语言一样一次全部报出来,这点对于报错的易读性而言算是一个优点。

但是今天我们要介绍的,是python3.10,更新后的python报错,解决了之前的缺点,现在python报错也能更加详细了,来看看现在的python报错:

str = "未闭合的str

File "d:\projects\python\learn\Py310探索.py", line 90
    str = "未闭合的str
          ^
SyntaxError: unterminated string literal (detected at line 90)
arr = [1, 2, 2, 3

  File "d:\projects\python\learn\Py310探索.py", line 91
    arr = [1, 2, 2, 3
          ^
SyntaxError: '[' was never closed

类型注释

喜欢python的小伙伴有一些是青睐他的动态变量,我们无需声明变量的类型就可以引用,这个变量上一秒还是int型的,下一秒就变成float了,这一切全凭我的意愿。但这实际上会带来两个问题,对于解释器而言,要处理这些动态类型需要解释器去猜测这个变量的类型,在运算的时候好及时转换,这会降低解释器的效率。对于程序员而言,有变量类型的函数我们不需要看函数内部代码就能知道这个函数传进去的参数是什么类型,返回的又是什么类型。而这一点在老版本的python中做不到。老版本的Python中我们需要看完这个函数的代码才能去猜测传入参数和返回值的类型(看起来像是重复解释器遇到的困境,但实际上困扰解释器的问题也困扰着我们),一个函数的代码量如果较少且容易理解,或者带有注释,对我们带来的影响可能没那么大,但当写代码的人不写注释且函数复杂难懂的时候那就是一场灾难。

在新版本的python中来了类型注释,这样可以明显地提高代码的可读性。小编认为这也是提高python易学性的一个关键。

def f(x: int | float) -> float:
    return x * 3.142
f(1)  # pass
f(1.5)  # pass
f('str')  # linter will show annotation error

类似上面这样,传入的参数可能是int也可能是float,虽然这部分内容是来自类型注释联合操作符的,但也能看到类型注释相关的内容。

小结

python3.10更新了很多有趣的东西,python也因此变得更加易于学习,现在正是学习python的好时机,小伙伴们赶快来学习python吧


免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。

同类热门文章

深入了解C++中的new操作符:使用具体实例学习

C++中的new操作符是动态分配内存的主要手段之一。在程序运行时,我们可能需要动态地创建和销毁对象,而new就是为此提供了便利。但是,使用new也常常会引发一些问题,如内存泄漏、空指针等等。因此,本文将通过具体的示例,深入介绍C++中的new操作符,帮助读者更好地掌握其使用。


深入了解C++中的new操作符:使用具体实例学习

怎么用Java反射获取包下所有类? 详细代码实例操作

Java的反射机制就是在运行状态下,对于任何一个类,它能知道这个类的所有属性和方法;对于任何一个对象,都能调用这个对象的任意一个方法。本篇文章将通过具体的代码示例,展示如何通过Java反射来获取包下的所有类。


怎么用Java反射获取包下所有类? 详细代码实例操作

员工线上学习考试系统

有点播,直播,在线支付,三级分销等功能,可以对学员学习情况的监督监控,有源码,可二次开发。支持外网和局域网私有化部署,经过测试源码完整可用!1、视频点播:视频播放,图文资料,课件下载,章节试学,限时免

员工线上学习考试系统

了解Java中的volati关键字的作用 以及具体使用方法

本篇文章将和大家分享一下Java当中的volatile关键字,下面将为各位小伙伴讲述volatile关键字的作用以及它的具体使用方法。


了解Java中的volati关键字的作用 以及具体使用方法

Java Map 所有的值转为String类型

可以使用 Java 8 中的 Map.replaceAll() 方法将所有的值转为 String 类型: 上面的代码会将 map 中所有的值都转为 String 类型。 HashMap 是 Java

Java Map 所有的值转为String类型