Python 3.x Python3有哪些已使用/未使用的特性?

Python 3.x Python3有哪些已使用/未使用的特性?,python-3.x,frontend,Python 3.x,Frontend,我最近做了一些网页设计作为爱好,主要动机是学习有趣的东西。学习Python当然很好,但我发现有一个伟大的Python重写太晚了,所以我必须学习Python 3和2.6 我是个新手,所以我想让大家分享一下他们认为Python3的优点/缺点是从那些从事最终用户编程而不是语言设计师的角度来看的。我的问题更多的是人们到底喜欢使用什么,或者避免使用什么,因为它们没有效率或者没有节奏感 对我来说,with语句是肯定的加号,而breakprint运算符肯定是负号 澄清编辑:有许多帖子询问是否应该学习Pytho

我最近做了一些网页设计作为爱好,主要动机是学习有趣的东西。学习Python当然很好,但我发现有一个伟大的Python重写太晚了,所以我必须学习Python 3和2.6

我是个新手,所以我想让大家分享一下他们认为Python3的优点/缺点是从那些从事最终用户编程而不是语言设计师的角度来看的。我的问题更多的是人们到底喜欢使用什么,或者避免使用什么,因为它们没有效率或者没有节奏感

对我来说,
with
语句是肯定的加号,而break
print
运算符肯定是负号

澄清编辑:有许多帖子询问是否应该学习Python 2或3,或者两者是否有任何区别。我发现我的问题是不同的:人们出于各种原因选择使用Python3,但他们可能对什么更好、什么不更好有自己的看法


另一个澄清:答案中指出,
with
后端口为2。*。道歉。

从长远来看,我认为他们所做的一切都是为了最好。他们删除了很多不推荐的方法,从而强制执行“只有一种方法”并提高了一致性。而且,
with
语句非常棒

使用Python3的一个明显问题是,它缺乏对许多大型库(如Django)的支持。如果您的库都没有使用Python 3,那么没有理由不使用它。

我还没有在“生产”中使用Python 3,但是在使用它的过程中,我发现
print
作为一个函数是一个极好的主意——例如,我现在可以很容易地将它放在
lambda
中,在2.*我必须使用
sys.stdout.write(%s\n“%foo”
,有点粗糙。此外,使用与
sys.stdout
不同的输出文件或删除最后的
\n
等调整的语法比Python 2更具可读性。*


顺便说一句,
with
也出现在最新的Python 2.*版本中,它不是Python 3独有的。

我非常喜欢字典理解:

{k: v for k, v in stuff}
以及:


这确实是主观的。Python3.x肯定是对2.x的改进。它包含了期待已久的更改,如:字典理解、有序字典、更强大的字符串格式…等等,更不用说更干净的库了。

一个优点是字节和字符串之间的澄清。在你的简短Python ex中有多少次您是否曾被不清楚的
UnicodeDecodeError
UnicodeDecodeError
所混淆?如果您在unicode和ByTestring方面从未遇到过问题,那么很可能您使用的是仅ascii语言(英语?;),但这通常是初学者最难掌握的概念。(顺便说一句,如果您仍然感到困惑的话,对于Python2.x)

我真的认为str和bytes之间的这种区别是Python3.0的一个优点。阅读正式的描述,阅读更面向最终用户的内容。这个新特性迫使开发人员在unicode对象和以特定编码编码的bytes对象之间保持清晰的区别。我相信这一变化将帮助新手更容易地理解这两种结构之间的差异,并将帮助有经验的开发人员使用合理的编程方法

但当然,这种改变也有其自身的不便之处:移植2.x应用程序相当困难,如果你还没有在2.x代码中清楚地区分unicode和字节字符串,那么这些str+unicode到str+字节的改变是最烦人的事情。烦人,但需要很长时间


对于许多用户来说,这些突破性的更改看起来很烦人,而且……对于重要的库/解决方案来说,实现这些更改也很烦人。Python2.x目前的优势在于大量的第三方应用程序/模块:但是,由于有时移植到Python3并不简单,这些第三方应用程序将需要一些时间进行移植(由于2.x仍然存在,这些应用程序将需要维护两个版本:一个是针对2.x客户端的,另一个是针对3.x的……维护成本高昂!)明年,运行Python3的完全成熟的应用程序的数量可能会非常少,因为与Python3兼容的第三方的数量很少。但是,我再次强烈支持这些突破性的变化:你读过这个吗?;)

我想他们可以做一个单独的pythonic打印功能,比如printme()。感谢使用提示的
。当然,我们可以重命名
print
,但由于将其作为语句和关键字删除对设计至关重要,因此不太清晰的名称不会带来真正的好处。我还喜欢将print作为函数的一致性;它消除了教授python时的一个混乱点。当然,choi语言的ce是非常个性化的…但是语言必须以某种方式进化,并且这个过程是公开的。所有这些都在Python 2.7中提供,除了一个更干净的stdlib。除了我的服务器没有Python 3;)哦,字符串概念不是问题,尽管当在苹果终端的输出中出现转换问题时我非常惊讶。我同意Unicode是救世主,Python 3在这方面很酷,因为我开发了越南网站!添加了一个指向Monkey,banana,hose文章的链接;)哇,很棒的文章。但我确实认为简单的程序看起来很美无论兼容性或惯性问题如何,使用无括号打印语句都会更好(因为我是新手,所以我希望能少用一些)。
(head, *rest) = range(5)