pythonWPS pythonwpsaccess需要最新版吗_新特性


吃青春饭的程序员?

都说程序员是吃青春饭的,这话我想否认,但有时候也不得不认同!你认同吗?有胆量就点个赞表示你认同!

真正的程序员是靠代码混饭吃的,而代码是要用编程语言写的,可是编程语言一直在更新,这就意味着我们要不断的学习新的东西。这不,新的Python版本3.9稳定版10月份发布了!

几个月前,我给我的小萌新程序员们说"Python的最新版本是3.8.4"的场景还历历在目!一转眼就成为了历史!几乎是打脸啊。

以前Python的更新周期是18个月,这次有人提议改成12个月的更新周期并且被接受了。所以接下来Python程序员就有更多新知识学习了。是应该感谢提这个建议的人呢?还是怎么他呢?

不过大家也不用担心,凡事都有两面性:

  1. 不断学习东西,就会变得更加聪明,老了也不会有老年痴呆症!
  2. 虽然编程语言不断更新,但编程的核心原理是变化很慢的。所以大牛都会说:我很少写代码了,我主要靠思想,思想,懂吗?

Python3.9 跟还是不跟?

大部分人应该都是在用3.8,那么3.9来了,我到底是跟还是不跟呢?这是一个问题!


pythonWPS pythonwpsaccess需要最新版吗_wpf listbox绑定不跟新_02


答案很简单:可以不跟!

这个答案适用于绝大部分人,因为3.9的变化没有很大的特性更新,也没有淘汰重要的特性。你的项目已经在进行了,完全没有必要更新。

当然对于新人,选择从3.9开始是个好的选择。

虽然说可以不跟,但了解一下3.9有什么新特性也还是很有必要的,因为:迟早有一天,你要更新的!

Python 3.9 有什么新特性 - 忙人版本

我知道大家都很忙,所以就捡重要的说啦。Python3.9对于广大的普通程序员来说,到底有什么更新呢?

1. Dict合并运算符


#3个人的成绩,麦叔最高,yeah!
score1 = {'张三':98, '李四':99, '麦叔':100}

#老师又发来两个人的成绩,一个是王五的,一个是麦叔的新成绩
#麦叔的成绩搞错了,实际上只有88, 
score2 = {'王五':87, '麦叔':88}

#新特性:合并字典运算符
score3 = score1 | score2
#{'张三':98, '李四':99, '麦叔':100, '王五':87}
print(score3) 

#如果要直接修改score1里的值,使用|=,类似于 += 
score1 |= score2


在3.8中,我们完全可以使用{ ** score1, ** score2}来实现。就是多了个运算符,没什么新意。

2. 字符串移除前缀和后缀


d = '日期:2020-10-15,星期四'
#新特性:去掉前缀
d.removeprefix('日期:')
#新特性:去掉后缀
d.removesuffix(',星期四')


字符串的去掉空格方法strip还是非常有用的,这两个方法相对来说有点鸡肋,完全可使用切片操作实现,不过也算是更加直观一些吧。

3. 容器类(list, set等)支持泛型

Python是一个动态语言,在list等容器类里,我们可以放入任何类型的数据(字符串,数字等),这个方便也会带来问题。说的高大上点,就是这样的代码不安全。

比如这段:


#这次成绩很不理想,麦叔只考了32分
scores = [32, 45, 65, 78]
#list可以添加任何类型,不小心加进去一个字符串
scores.append('88')
#计算总分:下面这行会报错,因为字符串'88'不能和其他数字相加
sum(scores)


这就是程序不安全,在最终运行的时候才会报错,怎么不早点告诉我??

解决方法就是使用泛型,说人话就是:定义list的时候就确定它里面的数据类型,后面就只能加这种数据类型:


#定义了scores里面只能存放整数
scores = list[int]()
#添加字符串进去是不允许的,在写代码的时候IDE就会告诉我们
scores.append('88')


这就意味着scores里面的东西一定是数字,我们后面对它的操作可以放心大胆的去做。也就意味着更安全的程序。

Python3.9之前也可以实现指定类型的list(泛型),但必须引入另外一个模块typing,也就是说是作为一个补丁来实现的。现在泛型是亲儿子了!

这个改变我觉得还是比较重量级的!为了更安全的程序,给它点赞!!

本来我就想说着3点,但是也太少了吧。还有一点,对于开发大型的,需要考虑时区的程序员很重要。

4. 引入新模块zoneinfo模块支持IANA时区数据库

如果我说2020年10月15日的下午4点开会,一个美国人和一个中国人听到后,所理解的时间可能是不同的,因为时区不同。这在有些程序中也很重要。

比如你开发了一个时钟程序,你在国内一直使用,效果很好。忽然有一天你去欧洲旅游了,你习惯性的使用这个时钟程序,可它还是显示的中国时间,结果造成你提前好几个小学赶到机场,你一定想要狠狠的把开发这个程序的人打一顿!这种程序,我们一定得考虑时区的问题。

Python3.9引入的zoneinfo就是为了更好的支持时区,严格说是支持IANA时区数据库:


from zoneinfo import ZoneInfo
from datetime import datetime

#定义时间的时候,同时传入时区
dt = datetime(2020, 10, 15, 16, tzinfo=ZoneInfo("Asia/Shanghai"))


IANA是一家组织,它制定了一个时区数据库,说人话就是:它定义了一个时区的列表,比如Asia/Shanghai表示中国时区(中国只有一个时区)。

我觉得对于大部分程序员来说,这几个就是最重要的了。

Python 3.9 有什么新特性 - 高级版本

当然还有很多其他的更新,比如:

  • 放宽了装饰器语法的限制
  • 新的数学函数
  • 新的解析器
  • IPv6范围内的地址
  • 灵活的函数和变量注解
  • 其他的细节的语言更新等

对于高级人士来说,我还是很诚恳的建议直接去看Python3.9的官方发布说明的,这个官方发布说明昨天才出来,正热乎着呢:

https://docs.python.org/3.9/whatsnew/3.9.html