为什么在Python中如此受欢迎?[关闭]


54

除了不喜欢空白作为语法之外,我并不讨厌,只是对Python不感兴趣。

我欣赏Perl的诗歌,并用bash&korn和shebang编写了漂亮的Web服务gnuplot。我写文件,troff不介意REXX。几年前没有发现tcl有用,但是关于Python的最大臭味是什么?我在简历中看到工作清单和许多应聘者,以此作为奖杯和奖杯。


我想实际上,我想以此为卖点,我只是找不到原因。


81
我从来不明白为什么人们会对Python必需的缩进感到恼火。我希望您无论如何都要缩进代码,对吗?
格雷格·休吉尔

10
@GregH当然可以,但是我的语法是否应由其强制执行?有点像Makefiles吗?
JE队列

5
@Xepoch:但是Makefile不仅需要缩进,还需要一种特殊的缩进,通常与另一种是无法区分的。如果Makefile需要任何空格缩进而不是专门的缩进0x09,则您可能不会反对,并且可能会在首选缩进宽度中使用一致的缩进。这是Python允许的。
格雷格(Greg Hewgill)2010年

31
Perl的诗歌?认真吗 如果您有幸维护其他人的Perl代码,您将理解为什么Perl在人气方面有所下降。
grokus 2010年

6
@格雷格,我同意你的看法。我之前说过这一点,我会再说一遍,无论谁抱怨Python的缩进规则,都应该要求他们维护缩进不良的代码。只是说...
grokus

Answers:


61

Python是一种经过精心设计的语言,具有相当干净的语法,完善的标准库,出色的包含和第三方文档,广泛的部署以及“脚本”风格语言的即时性(即,没有显式的编译步骤)。


36
设计合理?有没有注意到您有一个名为的全局函数len
替代

65
伦怎么了?我给您留下的印象是您只阅读了5分钟的python
Kugel,2010年

5
就个人而言,语言结构非常容易掌握,以至于我更好地了解了语言在内部的一般工作方式。这是小事。一流的函数,仅能将外部模块的相关部分导入当前函数,列出理解,元组,将self作为方法参数包含在内的能力帮助我了解了函数与方法之间的区别(其他语言只是藏在糖后面)。现在,我很难使用C#之类的语言,因为我凭直觉知道代码没有教我如何在内部工作。
伊万·普赖斯

1
python如何成为一种精心设计的语言?它使用weird __double_underscore_names__alllowercasefunctionamesmixed_underscoremixedCamelCase名称混合使用。它要求:def或循环的末尾有一个。它采用了大量奇怪的缩写strdictislice。看起来根本没有约定。真是混乱。点子,点子,禅宗...它更像是一种python宗教,而不是一种语言。它可能具有一些不错的功能,但是并不能解释为什么这么多的人如此退出。pyhon没有什么特别的。只是另一个设计不佳的产品。
t3chb0t

1
骇客是def什么?为什么我用a def而不是a 定义函数func?没有其他语言像python那样直观。
t3chb0t

76

我发现Python是我编写过的最自然的编程语言。在Python之前和之后,我已经使用许多语言进行了编码,或者或多或少地,您必须与之抗争。让它做您想要的。Python大大减少了这种麻烦。埃里克·雷蒙说,很多比我更好,为什么Python中?

与此相关的是,即使在迅速发展的同时,Python仍保持其清洁度。在我使用过的大多数语言中,引入新的语言功能会带来很多麻烦。但是,使用Python甚至可以一直添加主要的语言功能(想到装饰器),而不会感到难看。


8
基本上是在这里说这个。语法感觉很自然,几乎就像您在编写伪代码一样。
James Davies 2010年

2
Python非常紧凑:您可以将其整个功能集(以及至少其库的概念索引)掌握在脑海中。
systempuntoout 2010年

2
@ Zoomzoom83我的伪代码已经开始和结束了-它在python中
不起作用

1
@mbq而且我的伪代码带有花括号,但这是另一个故事;)
克里斯说,莫妮卡(

26

我希望这听起来不会太愤世嫉俗,但是IMO Python如此受欢迎是因为Java,C#和Objective-C完全相同。不是因为语言本身有什么奇妙的地方,而是因为它们每个人都有一个大型公司的赞助商,能够赞助大量的宣传,大量的广告,大量的库以及对他们首选语言的支持。


6
C#很特别,它具有linq
Daniel Little'9

39
Python背后有一家大公司吗?(正品问题)
JE队列

11
是的,这就是我的意思。在Google开始对Python产生兴趣之前,Python的“吸引力”要小得多。
梅森惠勒

10
@Mason-但可以肯定的是,一定有某些原因会导致像Google这样的大型公司将其“酷”起来?
Jas

7
人们为什么认为有Python的公司赞助商?有没有人注意到pycon的大小和庞大的Java / j2ee约定?这是大卫和歌利亚(David and Goliath)关于公司融资的故事。
rox0r 2010年

11

我的经验是,在编程中找到真正快乐的人通常会比在学校或大学学习的语言更适合自己。基本上,这意味着它们将从默认的PHP / Visual Basic / C ++ / Java / C#过渡到更奇特的(业务/职业),例如Python,Ruby,Haskell甚至是perl(因为它具有巨大的hack价值和晦涩感)。

别误会,有很多经验丰富的C#/ VB.net程序员对他们的工作和代码感到非常自豪和高兴(StackOverflow的家伙是一个很好的例子),但是您不会成为python程序员,仅仅是因为那就是他们在学校教给你的;这必须由您自己决定。

我认为Jeff Atwoord对此发表了一篇博客文章,但我找不到它。如果找到它,我将更新此评论。


1
蟒蛇是在我的学校教了101的第一语言
摩根Herlocker

几乎每种语言都有其存在的理由,并且至少在某些方面擅长。我认为这只是说“我喜欢它,因为其他人喜欢”。
NtFreX

9

与确实很酷并且会产生惊人的Code Golf-offs的Ruby相比,Python的核心理念是:“应该有一种-最好只有一种-显而易见的方法”,这是惯用的Python方法。与Ruby相比,我发现这是一个巨大的优势。


4
..或与Perl相比看似无限的方式?
JE队列

@Xepoch-实际上,在Perl中,好的/正确的做事方式往往比无限的要少得多,并且大多数有线索的人都可以很容易地告诉您,而无需太多分歧,前1名(或最多2名)是。如果您不相信我,请查看关于Perl的问题。是的,某些解决方案有10种不同的解决方案。但是大多数人都明确同意“最适合情况”的解决方案。
DVK

@DVK,我知道,但是从设计目标来看。
JE队列

8

我开始喜欢Python的原因与Eric S. Raymond所描述的相同:从概念上讲,用Python编写程序的行为与思考设计代码的行为非常相似。

学习成为一名优秀的Python程序员使我成为一个更好的C#程序员。一方面,它使了解LINQ变得容易得多。如果我没有在Python中使用类和生成器,那么我可能永远不会接受像这样的类型Dictionary<string, Func<T>>,或者从未习惯使用它yield return。现在,我已经使用Python装饰器了,AOP变得更容易理解。清单继续。


6

首先,如果语言本身具有强大的表达能力和实用性,那么像Python中的强制缩进这样的琐事就显得无关紧要。一开始我也因此而被拒之门外,但很快就学会了跳过它,现在甚至没有感觉到它是一个障碍,因为这种语言使我更容易使用。它就像Perl中变量的信号一样,这是一种无害的语言怪癖,任何熟悉该语言的人都不会对此感到困扰。

要了解为什么很多人认为Python很棒的原因,只需尝试学习该语言即可。原因与Perl大致相同。我发现我喜欢Python中的语法(例如,列表推导,OOP语法等),但这确实是主观的,您的看法可能会有所不同。我更喜欢将Python用于较大的项目,而我仍将Perl用于较小的脚本。

是回答你的问题。您将Python与Perl,bash和tcl进行了比较。事实是,这不是一个公平的比较。诸如bash之类的语言旨在编写小型脚本来自动执行常见任务。有些人认为,如果代码足够大,Perl也会变得笨拙(编写良好的Perl不会,但是编写好的代码很难在大型项目中获得)。IMHO Python与其他“脚本”语言的不同之处在于,它可以很好地扩展到大型项目以及小型一次性脚本。我认为Ruby也具有相同的质量。


6

仁慈的独裁者应该贯彻其良好风格的理念[1],良好编程的理念,如何编程的理念经常使我感到沮丧。我不喜欢范·罗森(van Rossum)。但是,他的语言拒绝表达非范·罗苏姆思想的尝试。他的思想工作真的好了很多(大多数?)程序员。但是我似乎不适合他的编程模型。

这就是为什么我认为Perl是一种高级语言。

[1]参见他的博客有关删除reduce


请您详细介绍一下您的推理过程,想听听更多。
JE队列

3
@Xepoch-一种编程语言充当表达手段。成语和思维方式可以用从“适合”到“很难适应”的连续思想来表达。例如,我不考虑列表理解。它们与我对问题解决方案的想法无关。但是,Common Lisp的reduce毫无疑问地流动了下来。但是,范·罗瑟姆显然是相反的。Java要求所有事物都必须在对象中。因此,用Java创建非面向对象的解决方案变得非常困难。等等-
保罗·内森

5

我认为在某种程度上,除非您想编写OS内核,否则Python是您唯一需要的编程语言。它适用于交互使用,随机破解,系统管理,科学应用程序,操作系统工具,Web应用程序,GUI应用程序,嵌入等,它是便携式,免费且广泛使用的。在实践中,没有其他编程语言真正涵盖所有这些领域。对于个人和公司而言,这是一项非常好的战略投资。


4
在这里不要怀疑Python,但我认为Perl即使不是更好,也能很好地满足您的描述。
JE队列

Ruby在这方面也做得很好。
ocodo 2011年

1
截至2015年,Python已成为科学计算的事实上的通用语言。其他所有内容都是经典的低级内容(C,C ++,FORTRAN),在少数几个领域(MATLAB,Mathematica,R,Julia,Lua)具有竞争力,仅用于库和基础架构(Java),随机脚本工具(bash) ,Perl)或.......以上都不是。
Paul

5

从2004年开始,我就开始使用Python进行开发:

  • 图形用户界面
  • 使用Python到C ++绑定编写ray Tracer场景脚本
  • 跨平台自动构建系统
  • 测试脚本
  • 解决日常问题的通用工具
  • 网站和网络应用

早在2004年,Python就成为了首选语言,因为Python脚本几乎不需要做任何修改就可以在Windows,Linux和Mac上移植。


4
引用不同答案的评论:“这里没有怀疑Python,但我认为Perl如果不是更好的话,很适合您的描述”。
DVK

4

对我而言,Python一直是亲爱的朋友。这是一种体面的脚本和原型语言。我能想到的关键是:

  • 语法简洁,非常简单易懂
  • 多范式,将其用作命令式语言?当然。哎呀 没问题。它还具有一些轻量级的功能语言功能,例如lambda,列表推导等。
  • 对于基本计算需求,它对基本数据结构,数组,元组,字典(关联数组),集合等具有本地支持。
  • 其他功能可以使程序员非常高效,例如鸭式打字,反射,元编程,修饰器,生成器等。
  • 丰富的库支持

lambda在python中损坏。
Paul Nathan 2010年

@Paul提供链接以支持您的观点并没有什么坏处。
Piotr Dobrogost

@Piotr:docs.python.org/reference/expressions.html#lambda无法包含语句。这违反了匿名函数的数学思想。
保罗·内森

这不是说lambda是完整的吗?
rox0r 2010年

4

它优雅且易于学习,一旦您熟悉了它的基本类型(尤其是列表),您的工作效率将无极限。它非常适合用于原型算法,或者用于最终可以直接放在机器上的类似于伪代码的语言中编写它们,并且它非常适合作为脚本语言来执行重复性工作或对文件执行烦人的操作。我将它用作使子流程彼此通信的胶合语言:对于某些简单的任务,它不如bash强大,但是,如果您需要做的不仅仅是一行代码,那么它将变得更加轻松。

然后,它不区分函数和子例程,您知道我的意思。


3

我看到许多Python爱好者刚从C语言环境切换过来,并对"Hello "+ "World"is之类的东西印象深刻"Hello World"。因此,我想说这是第一种不收集深奥/特定标签的脚本语言,因此在mar难者中散布,就像一片干燥的森林中的大火。这样创造出来的时尚现在可以独立存在。


2

现在我有点累了,重新解决这个问题:

我发现Python是特别适合科学编程任务的一种语言,这是其流行度非常强劲的地方之一。原因如下:

  • 相当强大的社区支持意味着这里有一些强大的库,而Python可以很好地替代MATLAB和该领域的其他一些流行语言。
  • 当您确实需要速度时,它可以很好地与C配合使用,但是速度实际上并没有那么必要,因此Python的解释性质并不是一件大事。
  • 我发现它是一种相当平易近人的语言,对于局外人来说,它没有太多的感觉,就像是奇怪的任意语法规则。在伪代码和Python之间进行转换非常快捷。
  • “接受或保留它,面向对象”。许多科学编程项目并不能从广泛的OOP中获得很多好处。有的。能够轻松地在两者之间切换的语言真是太好了。
  • 强大的跨平台支持。尤其是因为我使用的很少涉及GUI,因此我几乎可以依靠能够将Python程序发送给其他人而不必担心他们正在运行什么操作系统。

它不是编程语言的最终目标,而是一种不错的“是的,我可能有一个工具来解决出现的任何问题”语言,这可能就是为什么它现在很受欢迎。


除了列出的所有其他项目之外,我认为最重要的项目之一是“我几乎可以依靠能够将Python程序发送给其他人而不必担心他们正在运行什么操作系统”。当您不想卡在操作系统类型上时,这也是非常有利的。
塔里克2014年

1

在可用的框架(Django,Zope等)和易于导入的库中,Python都是一种非常“ webby”的语言,该库又涵盖了许多Web函数。

对于仅使用HTML,CSS + JS技能集(过去几年间大量新程序员的来历)的Web开发人员而言,我认为这使其成为一个非常有吸引力的主张(同上Ruby)。

另外,谷歌不是微软。


Java不是MS,因此,如果您的推理是正确的,他们会选择使用Java,而不是python。一定有其他原因。
rox0r 2010年

0

我认为主要原因之一是90%的google是由Python制成的。

但是,Python还是一种易于学习的功能强大的编程语言。它具有高效的高级数据结构和简单但有效的面向对象编程方法。Python优雅的语法和动态类型以及其解释的特性使它成为大多数平台上许多领域中脚本编写和快速应用程序开发的理想语言。

Python解释器和广泛的标准库可从Python网站http://www.python.org/免费以源代码或二进制形式用于所有主要平台,并且可以免费分发。同一站点还包含许多免费的第三方Python模块,程序和工具以及其他文档的发行版和指针。

Python解释器可轻松扩展为以C或C ++(或从C调用的其他语言)实现的新功能和数据类型。Python也适合作为可定制应用程序的扩展语言。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.