楼主: 客初
8055 11

应该学习最新版本的 Python 3 还是旧版本的 Python 2? [推广有奖]

荣誉版主

饿死在金字塔顶的人

泰斗

28%

还不是VIP/贵宾

-

TA的文库  其他...

kindle读书人

有体系有结构的资料

公司金融与公司治理

威望
9
论坛币
11412273 个
通用积分
27342.0681
学术水平
3923 点
热心指数
4871 点
信用等级
3873 点
经验
432428 点
帖子
4706
精华
87
在线时间
17172 小时
注册时间
2012-11-2
最后登录
2024-5-2

一级伯乐勋章 初级热心勋章 初级学术勋章 初级信用勋章 中级学术勋章 中级热心勋章 中级信用勋章 高级学术勋章 高级热心勋章 高级信用勋章 特级热心勋章 特级学术勋章 特级信用勋章

楼主
客初 企业认证  学生认证  发表于 2014-7-31 13:38:50 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
——本文整理自知乎——
★原问题:
看到最新Python版本是3.4,但是网上的资料,包括出版的书籍,都是最晚到13年左右,很多细节都不同,语法也过时了。
那此时应该直接学习3.X还是2.X?如果前者的话,有什么推荐的资料或者书么?最好中文。英文看起来效率会比较低。

★网友讨论:

网友1:徐酿泉
Py 3 毫不犹豫,强烈反对说什么向后兼容什么历史原因,就是因为你们 Py 3 才被抹黑成这样的。之前看到个幻灯片,说不用Py3的你们错过了什么,我找找。(前几期码农周刊看到的,没时间找了,这个答案是我凭着一口怒气用手机码的。)

干货:
十个碉堡了的 Python 特性,你不能用是因为你拒绝升级 Python 3
(翻页用方向键)

你真以为向后兼容就是兼容?Python(社区)在 2 到 3 的兼容已经做了大量大量大量的工作了。2to3 你们都知道,这个你们也该知道:Six: Python 2 and 3 Compatibility Library

现在 Py 2.7 向前兼容已经很好了,很多库同一套代码兼容 2.7 和 3,这叫不能兼容?哪个平行语言一套代码直接能用到另一个语言上?这叫平行语言?

平心而论,有断层,但是确是容易弥补的。

你们真以为那么多年 Py3 的更新都是吃白饭的?一个现代时髦脚本语言离开了不断的特性更新,只有半死不活的安全维护,这算活着!?

醒醒吧,社区正在不断向 3 迁移,虽然手头没有数据,但是不信可以写代码去 GitHub 之类的地方统计一下,Py 3 的支持是什么样的趋势。当年确实不方便用 3,因为没什么库,我因为这样的考虑入门也是用的 2 ,现在年复一年,一个又一个的库迁移了,你们还是一套说辞,这不是惯性不是惰性是什么?

现在还不支持 Py 3 的库大多是常年无人维护的东西了,当然还有少数必须的,比如说 OpenCV,但这不是放弃 Py3 的理由,人家问的是初学者,对于初学者来说不需要考虑公司用什么,不需要考虑计算某种化学数据的库是不是用 Py2 写的,人家到时候要用回 Py 2 稍微注意一点就行了——我现在实习中用 Py 2 也就是一直被编码搞得很恼火,其他没遇到什么问题。

3.X版本的没有pandas、matplotlib、scipy库请问你是哪个时代的Py3?难道你是坐时光机过来的??我用 Py3 处理数据机器学习处理图片,欢得很。

你打算把你的生命浪费在处理编码问题,体会那些早已过时的语法吗?一想到 map filter 竟然生成一个 list 我就心寒。

2.7 已经永不添加新的特性了,只会修复原有安全问题。

PyPy,各大 Web 框架,科学计算包(SciPy.org — SciPy.org),都已完美支持。(PyPy 是最近成熟支持的, http://morepypy.blogspot.jp/2014/06/pypy3-231-fulcrum.html,这也说明了趋势)
不要活在过去啊。

如果你们真信了向 Py 3 迁移要十年的话,Py 3 的迁移就需要无限年,你仔细尝试一下,那么向 Py 3 迁移只需要五分钟。

更新:
我不是说你不能用 2,纯粹看工程需要甚至个人喜好,但我需要破除对 3 的偏见。你说我喜欢 2 要用 2,你说你的代码依赖 2 要用 2,我举双手支持。但是你说新手别学 3,因为没人用 3,3不好学没有库,我就不敢苟同了。你是你,我不能强求你任何事情,哪怕你用 Py1 我都管不着。
  • 编码问题,首先这个问题是对初学者来说的,如果你觉得初学者学习 Python 要懂得 Python 的 str 类型是 byte array ,每一个字只有一个字节的空间,如果要放中文必须把一个中文用多个字节编码放进 str 用得时候组合起来,或者用另外一个类型……的话,那我无话可说。其次,就算你独善其身,你也可能碰到库翔一样的 unicode 支持。
  • 库问题,这是我的答案一直在说的——有名的库纷纷支持 Python 3,没有历史包袱的话使用 Python 3 基本不会碰到任何问题。
  • 语法差异是不大,这就是两者能做到兼容的基础。那么对于一个新手学习来说,应该去学虽然资源丰富但是终将死去的 2,还是去学 3?应该忍受 class Foobar(object): 还是轻松地写 class Foobar: ?应该是 input_raw 还是直接 input?
  • 对于上一条的补充,我说 Python 2 资料丰富,但实际上很多 Python 的资源是两者共享的(大多数问题是库问题。)其次,现在的 Py2 教程什么的也太老了——当然你说你百度搜索某个问题出来个百度空间的知其然不知其所以然的解决方法是宝贵的遗产的话那我无话可说。
  • 如果你们真的,真的,真的先入为主地把 2 和 3 已经当做两个不同的语言了那还怎么谈?__future__ 真的哭晕在厕所啊。

更新 3 的局限,你们自己看,有这方面需要的人或许比较适合Python 2,欢迎补充指正:

  • OpenCV
  • OpenStack
  • 一些云平台,比如 GAE
  • cz_freeze 不能将 Python 脚本打包成单独的 exe 文件

网友2:pansz

python2,不犹豫。python3在很长时间里都不会取代py2,甚至可能永远不能取代。因为它失去了向后兼容性,而语言失去向后兼容性的后果往往是致命的。

如果py3不失败的话,最乐观的情况是py3作为一种平行语言跟py2同时存在。要取代py2的可能性几乎没有。

py3对语法方面的修改并未造成任何优势实际上多少情况下可以等价翻译成py2代码,所以实际上你学两者没有非常本质的区别。换句话说,py3的语法改变不能算是一种改进,而只是为了制造不兼容而不兼容。

但你学python的价值在哪里?python的价值最主要的在于"battery included",意思是他有大量的现成的标准库跟第三方库。缺少了这些,你用python的意义就不大了,而为了用上这些,只有用py2,用py3是享受不到这些优势的,而如果没有这些优势仍然选择python只能说明你是个python狂热爱好者,而我从实用角度出发就不会选择py3。

好吧重复一遍:python的价值就在于大量的现成的库。缺少这些库的情况下完全没有用python作为编程语言的理由,所以要学习一定是优先选择py2,除非你需要的库只支持py3。

补充:看到有部分人对编码问题有疑问,不过,对于任何一个花过少量时间(最多半天足够)把编码问题彻底搞懂的程序员来说,这其实根本就不是问题。能被py2编码问题难住的程序员,搞什么别的语言也很难说能有多少成就


网友3:nexcvon
python 3 有很大改进,比 2 更容易理解。

如果题主决定学 2,建议当被 string bytes 搞晕时,了解一下 3,再做决定。

另外,3 的库已经比较全了,不支持 3 的,多数是不再维护的。


网友4:阿涵
Python3,很多库已经支持上来了,可以开始使用了。
光是python3里面字符串默认全是unicode这点就可以让我抛弃python2。

论坛的亲们,你们同意他们的说法吗?


你们现在正在使用的是Python的哪个版本呢?


你们学Python是为了什么?


看了这篇文章是否有要换版本的打算?


请大家继续讨论,畅所欲言~



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python 最新版本 最新版 新版本 Matplotlib Python 版本 编程 程序

回帖推荐

zxxsm 发表于3楼  查看完整内容

其实这个问题Python官方给了答案,我觉得说得挺好的! https://wiki.python.org/moin/Python2orPython3
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
狂热的爱好者 + 60 + 60 + 5 + 5 + 5 精彩帖子
1051541722 + 1 + 1 精彩帖子

总评分: 经验 + 60  论坛币 + 60  学术水平 + 6  热心指数 + 5  信用等级 + 6   查看全部评分

沙发
1051541722 发表于 2014-7-31 14:24:20 |只看作者 |坛友微信交流群
更新是为了更好地适应未来的需要,让我们往下看吧

使用道具

藤椅
zxxsm 发表于 2014-7-31 15:16:24 |只看作者 |坛友微信交流群
其实这个问题Python官方给了答案,我觉得说得挺好的!
https://wiki.python.org/moin/Python2orPython3
已有 1 人评分经验 论坛币 热心指数 收起 理由
客初 + 60 + 20 + 5 我很赞同

总评分: 经验 + 60  论坛币 + 20  热心指数 + 5   查看全部评分

使用道具

板凳
ike982008 学生认证  发表于 2014-7-31 17:37:29 |只看作者 |坛友微信交流群
python2 在中文编码上真是。。。纠结得无以言表。。。

使用道具

报纸
firstconfig 发表于 2014-8-7 14:56:45 |只看作者 |坛友微信交流群
我用的是Python v2,感觉挺好的,各种库比较齐全,就是中文编码比较麻烦.
一会尝试一下v3

使用道具

地板
小马哥_M 发表于 2014-8-7 16:05:55 |只看作者 |坛友微信交流群
zxxsm 发表于 2014-7-31 15:16
其实这个问题Python官方给了答案,我觉得说得挺好的!
https://wiki.python.org/moin/Python2orPython3
赞同~  一切答案都在其中。昨天下午花时间仔细读了一遍~ 还是决定用python2.7 (并非所有人都要这么选择!)

为什么我选2.7呢,因为我想把python当做我的通用语言,就是所有的问题只要能用 python 解决就用 python,所以,所以 python3 还是在很多方面都没跟上的,而且很多时候玩 Web 是必须用linux,而linux 预装的默认版本是 python2。

但如果你只想把 python 应用到某一领域, 例如科学计算,那选用 python3 基本不会有啥问题,因为scipy的主流组件都已经跟上了 python3 。

所以还是根据自己的需求决定。

使用道具

7
qdzhxg 发表于 2014-8-10 07:38:41 |只看作者 |坛友微信交流群
我认为新手老手都不必纠结这个问题,老手肯定是从2过来的,新手也不能总是2,也不能只是3,只会2和只会3都是不行的,我是新手,我要2也要3,

使用道具

8
igs816 在职认证  发表于 2014-8-11 14:21:04 |只看作者 |坛友微信交流群
新手完全可以从3开始学,打好良好语法的基础,再学2也来得及啊,至少学2的时候会节省很多时间。弄的好像学2的永远不会碰3一样,学3的永远不会看2一眼。语言之争是最没有意义的。喜欢,需要用到就去学习就是了。

使用道具

9
人人爱我 发表于 2014-8-28 14:16:38 |只看作者 |坛友微信交流群
果断学习python3,

使用道具

10
gxhg 发表于 2014-8-30 10:29:10 |只看作者 |坛友微信交流群
正在学python3.

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-2 12:42