python3发布时间_你打算什么时候转到Python3?

最近把Mac上的默认Python换成了3.5,如果将来需要用仅支持Python2的模块,打算通过新建虚拟环境解决。而在此前主要用的是2.7。切换版本的起因是看到Django会在2020年之后停止支持Python2的消息,这才知道2020年也是Python2官方停止支持的时间点。以前就读到过一篇讲转移到Python3的文章,当时公司集群和流程默认都用的2.7,没把这个太当回事儿。如今一晃两三年过去了,Python3已经走到了3.6。这两天读了官网和一些Python核心开发者的文章,把一些感想记录下来。

为何应该转到Python32020年后Python2不会再有官方的安全更新发布,意味着这之后Python2不再有官方的维护;

Redhat、Fedora等Linux发行版之后默认安装Python3(现在一般是两个版本都有,以后可能会不再提供2),意味着那之后再想使用Python2,需要自己安装。

诸如Django这样广泛使用的编程框架,开始追随Python的更新步伐,在新版(1.11)中放弃对Python2的支持(目前BioPython是两个都支持,还没看到停止支持2的时间表)。

上面提的都是更新的推力,使用Python3的吸引力是什么呢?没错,是3.x中的语言特性。直到不久前,我对3.x的印象还停留在对unicode支持和print改为函数上面。

Python3早在2008年就推出了,经过8年多的发展,引入的新特性远不止这些。这里只列举几个看到的印象最深的例子。

#矩阵相乘运算符:@

S = (H @ beta - r).T @ inv(H @ V @ H.T) @ (H @ beta - r)

#解包

a, b, *rest = [1, 2, 3, 4, 5]

rest

# [3, 4, 5]

#函数注释

def greeting(name: str) -> str:

return 'Hello ' + name

第一眼看到这个函数注释的语言,着实受了一惊:函数定义还能这样,还是我熟悉的Python吗?这种写法和C/Java/Go等静态语言的函数定义有些类似,只不过这里的参数类型写在后面。需要说明的是,这个仅是注释,运行时并不会自动校验参数和返回值是否合法,所以和编译语言还是不同的,但这样做的好处,就是可以省去在函数的docstring里声明参数和返回值类型,参数类型一目了然,这就是所谓的”self documented code”。有关3.5的更多特性,可以参看官方文档。

可能面临的障碍平台环境限制:比如你用的服务器上默认还是2.6。

这个容易克服。需要用3.x,可以下载自己编译,或者使用conda,关于conda如何使用,可参考之前介绍conda的文章,用它安装Python或R/Perl的包也很方便。正在用的模块不支持Python3怎么办?

有没有其他类似功能且支持3.x的模块?或者自己尝试将它移植到Python3,官方就有提供2到3的自动转换工具,除去个别程序调用C扩展的特殊情况外,移植过程通常不难。

题图:Josh Jones

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值