http://docs.python.org/3.0/whatsnew/3.0.html说它列出了什么 new ,但在我看来,它只列出差异,所以有人知道任何全新 Python功能,在3.x版本中引入?
为了避免混淆,我会将一个全新的功能定义为之前从未在任何其他代码中使用过的东西,有些你走过去然后去“噢,闪亮!”。例如。使外星人入侵的功能等。
答案 0 :(得分:9)
3.0中引入的许多全新功能也被反向移植到2.6,这是一个深思熟虑的选择。但是,这在所有情况下都不实用,因此一些新功能仍然只是Python 3。
元类如何工作,可能是最大的新功能。语法明显优于2.*
的{{1}}赋值...:
__metaclass__
但更重要的是,新语法意味着编译器在处理类主体之前知道要使用的元类,因此元类最终会影响类主体的处理方式 - 这在{{1}中是不可能的}。具体来说,元类的新class X(abase, metaclass=Y):
方法可以返回任何可写映射,如果是,则使用而不是常规2.*
来记录分配(并分配诸如__prepare__
之类的关键字)班级的身体。特别是,这使得类主体的 order 最终得到保留,就像它写下来一样,并允许元类(如果它选择的话)记录任何名称的多个赋值/定义。类主体,而不仅仅是为该名称执行的最后一个赋值或定义。与dict
中可行的类相比,这极大地拓宽了具有适当自定义元类的类的适用性。
另一种语法biggie是annotations - 请参阅PEP我指的是详细信息。 Python的标准库没有为注释提供特殊的语义,但正是因为第三方框架和工具有权应用他们希望的任何语义 - 因此允许对函数参数进行类型检查等任务,尽管不是由标准Python库。
当然还有很多其他的(新的“观点”概念通过def
中的dict 2.*
& c,仅关键字参数,更好的序列解包,{{1}等方法体现。对于更强大的闭包,...),不同的重量,但都非常有用和精心设计。
答案 1 :(得分:4)
New Syntax部分列出了Python 3.x中的新语法。我认为有时候这些东西是新的还是改变的都是有争议的。例如。异常链接(PEP 3134):这是一个新功能,还是对异常机制的更改?
一般情况下,我建议查看文档中列出的所有PEP。它们是主要变化/新功能。