一 简述
你是否还在使用Python3.7,3.6……甚至是更老的Python版本?
确实,尝试去使用一个比较“新”的Python版本存在必定风险,咱们容易遇到一些问题:
实际上,Python3.7的正式版最先发布于2018年06月15日,截止目前,Python3.7的最高版本是3.7.13(于2022年3月16日发布),它其实也并不算“新“了。
而Python3.8的首个正式版发布于2019年10月14日,目前已经持续维护两年多,更新到了3.8.13版本(于2022年3月16日更新)。
根据Python官网,目前最新的Python版本为3.9,目前还处于测试中,预计将在今年的10月发布第一个正式版本
分支版本 | 发布计划 | 维护状态 | 首个正式版本 | 终止更新 |
---|---|---|---|---|
3.10 | PEP 619 | bugfix | 2021-10-04 | 2026-10 |
3.9 | PEP 596 | security | 2020-10-05 | 2025-10 |
3.8 | PEP 569 | security | 2019-10-14 | 2024-10 |
3.7 | PEP 537 | security | 2018-06-27 | 2023-06-27 |
3.6 | PEP 494 | security | 2016-12-23 | 2021-12-23 |
3.5 | PEP 478 | security | 2015-09-13 | 2020-09-13 |
2.7 | PEP 373 | end-of-life | 2010-07-03 | 2020-04-20 |
详见官网:https://www.python.org/downloads/
在这里解释一下Python的几种维护状态:
处于bugfix状态,一段时候后可以尝试在生产环境当中使用(后果自行承担)
如果你对稳定性要求很是高,那么则应该维护状态为security的版本便可,由于除非遇到安全性的问题,它们几乎不会再进行更新了,因此使用起来会更更更稳。windows
来看看!Python3.8太香了!
一块儿来看看它的新变化,看完你确定想用
Python3.8:近乎全方位的性能提高
数据来自[Python官网安全]
测试结果的单位是纳秒(数字越小,性能越好),可见Python3.8的性能提高几乎是全方位的bash
二 新的语法:海象运算符
除了性能上的提高外,最值得一提的变化是,Python3.8中加入了新的语法,海象运算符::=
海象运算符是一个赋值表达式,它可以减小咱们的一些重复性操做,使得代码编写更加流畅、简洁易读。
能够看到,咱们在这个例子中使用了两次len(myBox)来得到盒子列表的长度,很是的麻烦。。。
好的,咱们优化一下,使用一个变量存储盒子列表的长度:
很好!可是我又发现,咱们虽然少写了一次len(myBox),少调用了一次len(),但却又多写了三次size!
对于程序员而言,多写几个字很容易形成生理及精神上的疲劳,甚至形成心理上的创伤,致使抑郁,最后造成网抑云之类的严重症状。
万一这不是一个只有几行代码的小例子,而是一个天大的项目呢?那必定会写断手!幸亏,海象运算符的出现防止了这一点:
是的!有了海象运算符,咱们能够在判断过程当中赋值新变量。
对比一下效率的提高:
原先的步骤是: 执行len(myBox) → 建立变量size → 访问size进行判断 → 访问size进行打印
如今变成了:执行len(myBox)建立变量size的同时进行判断 → 访问size进行打印
本来的四个步骤直接减小了两步。
通常写法:
使用海象运算符和列表推导式能够轻松完成这项工做(个人感觉下面的写法虽然简短,但是不够清晰,有悖于python语法极简单的设计初衷):
使用海象操做符:
这里就再也不举更多例子了,海象运算符还有更多用法等你发现
三 函数的新语法:形参限定符(仅限位置形参)
因为官方文档的名字有点晦涩难懂,因此“形参限定符”其实是我本身起的名字……
可是它确实很好懂对不对。。!!
它是一个新的函数形参语法,下面是仅限位置形参/的例子:
上面的例子说明,在函数test的形参列表里,位于限定符/前面的参数是仅限位置形参:只能用固定位置对应的方式传参,而不能使用如: b = ‘我是b’ 这样的键值对应的方式传参(叫作关键字形参)。
位于限定符/后面的参数既可使用固定位置形参,也可使用关键字形参。
对刚才的例子稍做修改,下面是仅限关键字形参限定符*:
也就是说,位于*后面的参数只能以关键字形参的方式传入。
而且,限定符与kwargs不冲突:
若是函数须要接受许多不肯定的参数,那这确实是一个不错的特性
Python3.8对f-string的补充:说明符 =
什么是说明符呢,下面举这么一个字符串例子:
能够看出,在说明符=左侧的表达式运算结果或者变量将被输出到说明符的右侧,也就是用:变量名称或表达式结果 = 变量的值或表达式结果 的这种格式进行打印输出。
好比一个表达式的例子:
是否是颇有趣。。。
而且,它能够帮你规范打印格式:
自动加上了千分位逗号。。。够意思了
三 关于Python3.8更详细的变化能够在Python官网查看:
四 关于升级到Python3.8
只可以下载新的安装包进行全新安装,没法平滑升级
安装新版本后将旧的环境变量改到新的Python路径便可完成升级!
五 关于库的迁移
建议从新安装全部的库,而不是将旧版本的库直接移动到新版本(虽然也能够这么作!)
可使用pip freeze > req.txt 将当前python解释器所安装的库所有导出到txt
升级完python后使用 pip install -r req.txt 一键安装
六 关于Spyder
spyder是一个 Python IDE,它由python + pyqt编写。
断点、交互式编码、变量管理器、代码分析、ipython、cython控制台……
查看dataframe、在控制台显示图片它都能作到,以及有更多的功能等你解锁……
调代码,作测试,搞分析,很是好用!选中一片代码,按下F9便可运行选中的代码片断……
而且它是开源的,已有5000+star:https://github.com/spyder-ide/spyder
如今,它可以很好的支持Python3.8了,而安装也十分容易:
安装后使用命令行启动
我不得不吐槽的是,实际上咱们安装的是最新的spyder4,可是启动名称仍是叫spyder3?这是否是有点钦定的感受。。
使用pip安装spyder后,spyder3.exe位于你Python路径下的Scripts目录中,将其发送到桌面快捷方式,并设置图标便可。
图标的位置以下(Python38是你安装Python的路径):
D:\Python38\Lib\site-packages\spyder\windows\spyder.ico
我最终仍是没能抗下诱惑,准备升级到Python3.8……
我已经升级了,确实很好用,产品经理很爱我