Python使自己作为自己的语言独特的一些特征是什么?我正在寻找各种特性,从好到坏,对障碍有用,语法到实际使用情况,但是对于普通开发人员而言,无遮掩的观察将是最有用的。
我是新手,因此可能需要解释一些直观的内容。
Python使自己作为自己的语言独特的一些特征是什么?我正在寻找各种特性,从好到坏,对障碍有用,语法到实际使用情况,但是对于普通开发人员而言,无遮掩的观察将是最有用的。
我是新手,因此可能需要解释一些直观的内容。
Answers:
您将很难找到绝对独特的功能。自成立以来,大多数语言功能已被一种以上的语言采用。有些可能更稀有,主要是因为它们不是新鲜事物,还是默默无闻,或者是出于充分的理由而消失了。不过,即使那样,您最好还是查看功能组合。
也就是说,Python的几个功能应该构成相对独特的组合。至少我不知道具有重叠功能集的远程(流行和实用)任何语言。如评论中所述,Ruby非常接近,但是仍然存在许多差异。
attr = SomeDataType()
,并自动生成一吨的代码。Django的“模型”就是一个例子。O(1)
通常会自然产生中间结果的空间,很少有任务实际上一次需要存储中的所有项),可组合数据处理从未如此简单。O(1)
除非您明确保留结果,否则它们会占用空间)。yield
,这主要是使编写迭代器(此处称为生成器)变得更好。它们是上述功能的老大哥,支持各种控制流程。C#具有相似的东西,但关键字相同。但是,yield
它也过载以支持有限的协程(例如,Lua具有更详尽的支持),但是,聪明的人在解决难题时很好地利用了它们。我想到了两个例子:具有回溯和无栈限制的递归下降解析和异步I / O(具有方便的语法)。for key, value in mapping.items()
),还可以将任何已知长度的迭代器(诚实地,主要是元组)分解为多个变量。从3.x版本开始,它甚至对于未知长度的集合都非常实用,因为您可以指定一些变量使用单个项目,而一个变量则保留所有剩余值:first, *everything_in_between, last = values
。propery
对象中。*args
和**kwargs
,将元组和字典映射为参数的简便方法,等等。 。
我猜想使Python独特的唯一原因是它公开的功能的特定组合。对于大多数编程语言来说都是如此。
或者可能有一件小事情:我还没有看到Python self
作为一种形式参数明确传递给以任何其他语言完成的对象成员函数的方式。这是一件小事,我看不出这是如何真正改变的。
但是我对Python不太熟练,因此可能肯定缺少一些东西!
自动处理文档字符串成为其所有者的属性。通常,Python的所有出色的自省功能都使其成为一种非常独特的语言,从使用help()的能力到__doc__
用作对象的一流属性的能力。例如:
>>> class DocStringException(Exception):
... """Error message is the same as docstring"""
... def __str__(self):
... return repr(self.__doc__)
...
>>> class ExampleException(DocStringException):
... """An example happened"""
...
>>> raise ExampleException
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
__main__.ExampleException: 'An example happened'
其他有用的自省功能:
Generator Expressions
input()
让我解释一下,到目前为止,我还没有看到一种语言,您可以在其中为打印某些内容的语句分配一个值,就像ruby的print/gets
,但是为打印内容分配一个值,而不是:print "Foo" bar = gets
yield
ordereddict, namedtuple, array, list, tuple, dictionary
事实是,Python是极少数具有极低语法开销的语言,它具有强大的表达能力:列表/集合/字典理解,产量,修饰符,评估,元类编程,自省,优化的内置数据结构(列表,字典,集合),所有这些事情都以一种非常不错的方式汇聚在一起,使您(开发人员)能够以您认为的最快的速度,用简洁,优雅的代码表达您的想法。我真的想不出具有这种杀手级功能的其他语言。
我会说它是使用缩进来包含if语句和循环。还没有看到其他语言的版本。
我认为它非常方便,因为它使混淆python代码变得更加困难!
除了功能以外,它似乎还可以逐行地执行,而且也可以这样解释,这很好。