历史原因 Py3 不兼容 Py2,现在 Python 3 已经到 3.8,3.9 了,很快 3.n 的数字要用完了,版本号应该 4.0 起跳了。Python 4 会借大版本号,再搞一次大跃进吗?全面拥抱多核心 CPU ?
|
1
3.9 3.10 3.11 3.12 ... 3.10086
|
|
TinkDec 18, 2019 via iPhone
2
不会
|
|
3
最后版本号可以是 3.141592653 嘛🐶
|
|
wtks1Dec 18, 2019 via Android
4
说不定直接从 python3 变成 python+了呢
|
|
Xuyiyang23333Dec 18, 2019
5
@raysonx 23333。
|
|
shintendoDec 18, 2019
6
python 2020
|
|
tiedanDec 18, 2019
7
python 3 plus
|
|
8
Python3A,Python4 多不吉利
|
|
lhx2008Dec 18, 2019
9
如果向前兼容的话,就还是 3.10 3.11 ,不向前兼容才是 4.0,并不是 Java 和 Chrome 那种只管加主版本
|
|
10
楼主你需要理解 semver
|
|
11
3.n 就要用完了还行,是谁规定 n<10 的?
|
|
mimzyDec 18, 2019
13
不会。「 Python 4.0 will merely be "the release that comes after Python 3.9". (Also the release after 3.9 will probably just be 3.10.) 」另外 GIL 不是那么容易去掉的。
http://www.curiousefficiency.org/posts/2014/08/python-4000.html |
|
14
@raysonx 这个命名方式今后会造成很大的困惑,比如 Python 3.6 和 Python 3.60 看起来很像,其实相隔了 54 个小版本。
|
|
leavicDec 18, 2019
15
真拥抱多 CPU 核心了我管他兼容不兼容,一定上。
|
|
16
emm,Python 这个语言如果不搞好 Python Specification 的,靠 CPython 修修补补,很难解决所谓的多核心问题。
|
|
mimzyDec 18, 2019
17
|
|
raysonxDec 18, 2019 via iPhone
18
@miniyao 然而这种版本命名方式已经成为现在绝大多数著名软件所用了,包括 Linux 内核 kubernetes Nginx 之类的
|
|
DefoliationMDec 18, 2019 via Android
19
? 3.10 3.11 3.10000 被你吃了?
|
|
imgseDec 18, 2019
20
python 是要作死吗? python2 和 3 的兼容问题,才快解决完。
|
|
21
给楼主科普一下 Python 的版本号知识。
实际所有的官方 release 版本号都是由完整三段组成的,分别是:major.minior.micro,每段不限于 1 位数,比如 3.12.34 这是合法的。 major 号变化是翻天覆地的。 minior 号变化说明有新增功能或功能变更, micro 变化没有功能不同,只是优化或解决 bug 官方说明: https://www.python.org/dev/peps/pep-0440/ python 的三方库都执行这个规则定版本号。比如 django 1.11.27 |
|
ys0290Dec 18, 2019 via iPhone
22
别啊,3 的手册还没看完呢
|
|
hakonoDec 18, 2019
23
@Pastsong 但是作为一个正常程序猿的思维,n 会自然地被作为 string 中的一个字符来看待,而不是数字中的自然数 n。
比如 3.11 会首先觉得是 3.1 的子版本而不是十一 因为这种思维上的问题,早就出过不止一次问题了。最经典的应该就是当年 windows 10 发布,因为 windows 获取系统版本的 api,返回的版本号是 10.0,导致很多软件只取第一个字符,把系统版本编号当成了 1,认为系统版本过老拒绝启动 顺便贴一下 MSDN 上的各个系统对应的版本数字,也让大家来想想,如果自己处在 windows xp 或者 windows 7 的时代,面对这么缓慢增长的版本数字,当时肯定会觉得,在有生之年微软也不回把版本跌倒到 10。然而谁也没想到,微软直接来了个 win10。如果自己处在那个时代,是否能避免上面说的 BUG ? Operating system Version number Windows 10 10.0* Windows Server 2019 10.0* Windows Server 2016 10.0* Windows 8.1 6.3* Windows Server 2012 R2 6.3* Windows 8 6.2 Windows Server 2012 6.2 Windows 7 6.1 Windows Server 2008 R2 6.1 Windows Server 2008 6.0 Windows Vista 6.0 Windows Server 2003 R2 5.2 Windows Server 2003 5.2 Windows XP 64-Bit Edition 5.2 Windows XP 5.1 Windows 2000 5.0 |
|
KyonLiDec 18, 2019 via iPhone
24
@hakono #23 那我属于不正常的,可能是因为第一次有意识的看版本号就是三段的,导致我产生了要用以.分隔后的正整数来比较大小的错误习惯
|
|
25
@hakono 作为一个程序员,你不仅要知道被广泛使用的 SemVer https://semver.org/ ( Python,Node.js ,Go,PHP 等),还要知道版本只是一个约定的规范,软件可以自由地使用任何版本系统,比如 Windows 10 Version 1903 Build 18362.535 ,Java SE 8u231,TeX 3.14159265
|
|
VegetableDec 18, 2019
26
|
|
OskDec 18, 2019 via Android
27
同不正常,导致数学上比较 1.11 和 1.2 这种,下意识觉得 1.11 更大,但仔细一想又发觉哪里好像不对劲。。。😭
|
|
toptylooDec 18, 2019 via Android
28
不会
|
|
29
@hakono 包括但不限于 linux 内核,nodejs,golang 都在大量的使用 n>10 的版本号,可能你要想想什么才是正常程序猿的思维了
|
|
FelldeadbirdDec 19, 2019 via iPhone
31
所以我还是没理解到 1 和 10 难道不是区别很大的版本?唔…?
|
|
zdnypDec 19, 2019
32
老实说,经历了 2、3 的噩梦,应该不会重蹈覆辙了。
|
|
pyscreamDec 19, 2019
33
可以采用巨硬的风格,直接 python 10
|
|
34
@echo1937 现在 Python 官方正在推 Sub-interpreter,应该有望解决多线程的问题,简单来说就是每个 interpreter 运行在一个线程上,各自拥有自己的 GIL,唯一的问题就是需要 c 库更新代码...
|
|
37
半只脚踏进坟墓的东西了也能聊真是
|
|
arischowDec 19, 2019 via iPhone
38
为什么你不去搜索?
|
|
superrichmanDec 19, 2019 via iPhone
39
@hakono 版本号中的点是分隔符不是数学意义上的小数点。点分隔的每个数字都是独立的,不存在数字不够用的说法。参考 pep-440。https://www.python.org/dev/peps/pep-0440/
|
|
nullccDec 19, 2019
40
3.9 后面应该是 3.10 而不是 4.0
|
|
lwh0328Dec 19, 2019 via iPhone
41
Python3S, python3SE, python3S Max, python3S Max Lite Pro.
|
|
xnodeDec 19, 2019
42
p++ p#
|
|
AM2coderDec 19, 2019 via Android
43
楼歪得厉害😄
|
|
kneepDec 19, 2019 via iPhone
45
这个数字可以两位数甚至三位数
|
|
hakonoDec 19, 2019 via Android
46
@Pastsong
@wwqgtxx @superrichman 请勿理解歪我想说的观点,我说的是对程序员来说,对版本号的理解直觉性的会觉得 3.11 是 3.1 的子版本,而不是十一。 这和任何版本规范无关,而是直觉性的,下意识的行为 这种思维方式的原因是,在编程时,通过获取版本号的 api 得到的版本号是个字符串 string,而不是 int。在用代码对版本号进行处理时自然会使用字符串的逻辑来处理版本号而不是数字。而处理版本号时很多人会选择使用字符串截断来获取主、子版本号,而这就是我说的这种思维的根源。 这也是我举例 Windows10 例子的原因 请问在 xp 或 win7 时代写一个判断系统版本的逻辑,你们能否避免我上个回帖中提到的那个 bug ? |
|
siganushkaDec 19, 2019
48
有必要 Google 一下“版本语义化”
|
|
weixiangzheDec 19, 2019
49
@hakono 那你需要自行适应了,现在开源的软件我看都是这样的
|
|
qpingDec 19, 2019
50
@hakono #46 在特定的年代,人的思维会有局限性,就像过去的人不会想到 windows 版本还能变成 2 位数,导致只取第一位作为版本,不够健壮。
时代在发展,要以发展的眼光看待问题,出现新的问题就想新的解决方法,而不应该紧抱固有的思维,你说对不对 |
|
qpingDec 19, 2019
51
@hakono #46 很多规范是因为过去太不规范了,大家对于版本号都有一套自己的理解,导致出现的各种问题。规范的出现,是对版本认知的统一。以字符点 "." 分割来获取主版本、子版本、补丁版本号。这样一目了然,自然不会再出现过去这种只取第一位作为主版本的现象。
|
|
52
@hakono 可能只有你有这样的直觉……
|
|
zpf124Dec 19, 2019
53
@hakono 你的理解是你个人的理解,不是程序员的理解,不是程序员都会觉得 3.11 和 3.1 有关联的。
3 段式版本号算是最常见最普遍的一种命名方式了,多接触几种语言或者几个项目都不会有你这总想法。 linux 4.1.x 和 4.19.x nginx 1.1.x 和 1.16.x docker 1.1.x 和 docker 1.17.x |
|
54
@hakono 对于 python 来说,最简单的办法就是
>>> sys.version_info sys.version_info(major=3, minor=7, micro=2, releaselevel='final', serial=0) 这样来解析版本号才是官方推荐的方法,而不是解析字符串 如果真的要解析字符串,请用“.”来分割字符串,而不是简单的靠第几位去匹配 |
|
55
@hakono 不要随便代表别的程序员。。
|
|
VegetableDec 19, 2019
56
实际上 python4 已经出现在官方一些讨论中了,为什么都在聊 semver?
|
|
dafsicDec 19, 2019
57
就说下你们对 3.11 怎么读就知道了,读成三点一一的?还是读成三点十一的就好了?
|
|
HyHyemmmDec 19, 2019
59
新语言我只认 swift 1234
|
|
IllusionaryDec 19, 2019
60
Python Pro Max
|
|
OceanSeaDec 19, 2019
61
Python 3s or Python 3 Pro
|
|
robinlovemaggieDec 19, 2019
62
最终 all python == one python, 因为 CPU 的发展最后归于量子计算,单核秒一切~
|
|
shawnLuoDec 19, 2019 via Android
63
Python3 max
Python3 max pro Python3 max pro plus |
|
janxinDec 19, 2019
68
python 3 plus plus
|
|
ungrownDec 19, 2019
69
@hakono #46
你所描述的压根不是什么思维 仅仅只是特定场合下的方法 请不要因为你只会这一种方法就觉得这是正常思维 什么你说你不光只会这一种方法会的方法多了去了? 那就更奇怪了为什么你非要认定这一种方法能代表思维 |
|
qakitoDec 19, 2019
72
偷偷告诉楼主,perl 已经 5.30 了哟
|
|
djFFFFFDec 19, 2019
73
@hakono 难道不是对非程序员来说,3.10 看起来像 3.1 的子版本,对程序员来说,3.10 看起来就是 3 的第 10 个版本?你有这种直觉只能说还是业余程序员吧
|
|
hakonoDec 19, 2019 via Android
74
@qping 在有三段式或遵守特定版本命名规范的情况下,的确这个问题不是很大。比如 Python 比如 win10 各个版本的。
可能我上面的回复加的限定还不够多,导致很多人误解,这种直觉性的东西针对的是没有遵照特定版本命名规范或者随性命名的情况。可能我顺手用了 3.11 和 3.1 导致很多人觉得我在说 Python,但我想表达的是这种情况:某个软件,没有遵照版本命名规范的版本或系统,随手定了个版本号比如 1.1,这种情况下直觉性地会觉得 1.11 是 1.1 的子版本,这和命名规则无关 当然,上面我说了所有程序员,代表了所有人的确有失偏颇。可能是因为我最早从 Win32 编程还是主流的那个时代起步的,版本命名不够规范的影响还留着点,时代在发展当年根本没人相信也没考虑到 Windows 能迭代到 10.0,导致程序设计不健壮 但其实也并不是想说要否定版本命名规范这东西,直觉这东西形成了就不好改,每次看版本号我的思维都是 1.11 哦 1.1 的子版本,然后马上又提醒自己 11 是十一不是 1 |
|
wwqgtxxDec 19, 2019
75
@hakono 其实你说的这个问题和千年虫问题很像,当初也是用两位数来标记年份,又有谁想到了会进入 2000 年。
不过在现在这个年头应该不会再有程序还在抱着两位年份来做了吧,所以观念是会变的,只要大部分人都遵循这个命名规范,其实就不会产生什么歧义了 |
|
marcong95Dec 19, 2019
76
@hakono #23 windows 版本号的问题其实根本不是对版本号的理解的问题,你抛开程序员的思路,把那个版本号当普通数字来比较也是完全可行的,10.0 > 6.x > 5.x。而且也没出现 3.10 > 3.9 的这种情况。先 atof 然后比较,在已经发布了的 windows 内核版本号上一点问题都没有。
只不过是当年的人过分武断认为版本号在软件的生命周期内没可能上到两位数,这无论如何都是错误的编码方式 |
|
78
@djFFFFF #73
不,就算非软件从业者,看到 3.10 ,也不会马上联想到 3.1,因为中间那个小数点实在太扎眼,如果 0 算是修订版编号的话,为什么前面要有一个小数点?说不过去的! dota 的地图版本就是一个例子,多少年了版本号一直遵循 x.xx 的格式,但是新图出来很多 bug 要修复怎么标注修订版呢?数字后面加小写字母,比如 7.23e 这样。 诚然玩 dota 的有不少软件从业者,但更多的是无软件开发背景的人,他们能轻松理解两位数子版本的含义,也能理解为什么要额外加一个字母来代表修正版。 所以说,根本不存在什么“程序员思维”,搞软件开发过程中产生的各种习俗规则,本质上是为了实用性,而实用性是放之四海而皆能被理解的,版本号这个东西不存在说什么只有程序员能看懂。随便一个人看到 3.1 和 3.10 ,也不会不假思索认定这俩号之间除了前面的 3 之外有其他关联。 |
|
xxm459259Dec 19, 2019
79
一看 LZ 就没做过 Leetcode 165... https://leetcode.com/problems/compare-version-numbers/
|
|
jellyspotDec 19, 2019
80
你以为 9 完了就归零了?还是两位数三位数啊
|
|
82
你对版本号的认识有点业余……
|
|
yzlnewDec 19, 2019
83
你对版本号的认识相当业余……
|
|
U7Q5tLAex2FI0o0gDec 19, 2019
84
谁告诉你 3.9 以后版本号就用完了???????
此处可以 @ 迷惑行为大赏 |
|
lolizeppelinDec 19, 2019
85
哼! php 能 7 得, 我 python 就不能 8 ?
|
|
U7Q5tLAex2FI0o0gDec 19, 2019
86
你对版本号的认识相当业余……
|
|
zgq3337Dec 19, 2019 via Android
87
都有量子了,可以是“3.量”
|
|
heiheidewoDec 19, 2019
89
下个版本 python5 妥妥的
|
|
xinghengDec 19, 2019 via iPhone
91
@hakono 比较版本号直接用 string comparion 还好意思说,不是说很多人那样用了就变成规范了。
iOS 9 升到 10 的时候不也是很多菜鸟犯了这个错误,老老实实修 bug 就对了。 |
|
blindpirateDec 19, 2019
92
@ungrown 你确实是一个人。。。不要代表其他程序员。
|
|
blindpirateDec 19, 2019
93
|
|
tt67wqDec 19, 2019
94
我赌五毛不会拥抱多核心
|
|
xyptyDec 19, 2019
95
python 365
|
|
fhsanDec 19, 2019
96
你号没了
|
|
foxyierDec 19, 2019
97
python3.8 文档里明确写了会有 python3.10
|
|
wangxiaoaerDec 19, 2019
98
所以如果用 3-6-1 3-60-1 这种表示方法就不会疑惑了。
|
|
msg7086Dec 19, 2019
99
你们还真别说,Windows 3.11 就是 Windows 3.1 的增强版,后来又出了个 Windows 3.2。
不过现在版本号都有更多的意义了,不像当时那样拍脑瓜写数字,所以应该不太容易误解就是了。 |
|
nomemoDec 19, 2019
100
只是版本号有什么困难的。
|