笔记:这篇文章最初于2015年4月1日发布。它已更新,以反映Python的越来越多的普及。

Python长期以来在开发人员中很受欢迎,但古老的编程语言似乎有一会儿。经过多年扮演java的第二个小提琴一些来源现在将Python评为世界上最受欢迎的编程语言

不要错过:Java vs. python:哪种编程语言最适合您?

实际上,IEEE频谱甚至有Python延伸其铅超过C,C ++和Java!他们建议了几个原因:首先,随着现代微控制器继续增长力量,他们有权托管Python解释器,允许Python列为嵌入式语言,传播它的范围。其次,Python可能正在利用r使用下降,进一步巩固了Python在处理统计和大数据应用方面的主导地位。

Python的灵活性ftw

Python如此热的最大原因是其相对简单和难以置信的灵活性。很少有编程语言可以匹配Python符合您的特定编码样式的能力,而不是以某种方式强迫您的代码。

虽然Python要求您遵守某些惯例,例如添加空白(请参阅PEP-8样式指南),以便易于阅读和理解,但它仍然保留灵活性,让开发人员代码以自然的方式允许开发人员代码给他们。舒适程度可以显着提高开发人员效率,并降低误差的潜力。

这种灵活性具有另一个关键益处:而不是执行特定编码风格的使用,它让更多高级开发人员使用他们觉得的风格最适合解决特定问题。

有四个主要的Python编码样式:命令,功能,面向对象,程序。(有些人结合了势病和功能编码风格,而其他人将它们视为完全独立的样式。)您可能会或可能不同意所有四种形式是有效甚至有用的 - 但仍然可以使它们成为所有可用的。让我们来看看每个方法的利弊以及一些例子。

简要概述四个Python编码样式

  1. 功能:每个语句都被视为数学方程,避免了任何形式的状态或可变数据。这种方法的主要优点是它对并行处理很好,因为没有任何状态需要考虑。许多开发人员更喜欢这种编码风格进行递归和λ微积分。(请注意,Python的功能编程的实现偏离标准读取,这是不明的 - 因为如果您不小心,可以保持状态并创建副作用。如果您需要纯粹的功能编程实施,Haskell可能是一个更好的选择。)
  2. 至关重要的:计算是作为对程序状态的直接改变的。在操纵数据结构并产生优雅但简单的代码时,这种风格特别有用。Python完全实现了这个范例。
  3. 面向对象:依赖于被视为对象的数据字段并仅通过规定的方法操作。Python没有完全支持此范例,因为它无法实现数据隐藏(封装)等功能,许多人认为是面向对象的编程范式的主要要求。此编码风格也有利于代码重用。
  4. 程序:任务被视为根据需要调用的函数的逐步迭代。此编码风格有利于迭代,排序,选择和模块化。Python Excels在实现这个特定的范式时。

四种款式,一个例子

通常,您选择特定的编码样式以满足特定的需求,但使用常见问题,例如常见问题使得更容易比较不同的样式。我们的示例旨在计算以下列表的总和:

my_list = [1,2,3,4,5]

1.使用功能编码样式

功能编码风格像数学方程式处理一切。计算总和的两个最常见的方法我的列表将使用本地功能或Lambda表达式。以下是您将在Python 3.6中的本地功能进行操作

导入functools my_list = [1,2,3,4,5] def add_it(x,y):return(x y)sum = functools.reduce(add_it,my_list)打印(和)

Functools.包提供对数据操作的高阶函数的访问。但是,您并不总是用它来使用Python执行功能编程。这是一个简单的例子我的列表使用lambda功能:

Square = lambda x:x ** 2 double = lambda x:x + x打印(list(map(square,my_list)))打印(list(double,my_list)))

如您所见,Lambda表达式比类似的程序方法更简单(或,至少更短)。这是一个lambda函数版本的functools.reduce()称呼:

导入functools my_list = [1,2,3,4,5] sum = functools.reduce(lambda x,y:x + y,my_list)打印(和)

2.使用势在必行的编码风格

在必要的编程中,你专注于如何程序运行。计划根据需要更改状态信息以实现目标。这是一个例子我的列表

x在my_list中的x = 0:sum + = x打印(和)

与前面的例子不同,值随着循环的每个迭代而变化。因此,有国家。当变量具有状态时,必须保持该状态,这意味着变量与特定处理器相关联。势在必行的编码适用于简单应用程序,但代码在复杂数据科学应用程序上的最佳结果时执行得太慢。

3.使用面向对象的编码样式

面向对象的编码是关于提高应用程序的重用代码的能力,并使其更容易理解。对象方向提供的封装允许开发人员将代码视为黑匣子。使用继承等对象方向功能使得更容易扩展现有代码的功能。这里是我的列表以对象为导向的形式示例:

class changeList(对象):def __init __(self,any_list):self.any_list = any_list def do_add(self):self.sum = sum(self.any_list)create_sum = changeList(my_list)create_sum.do_add()打印(create_sum。和)

在这种情况下,create_sum.是一个实例更改列表。内心的工作更改列表对使用它的人无关紧要。所有真正重要的是您可以使用列表创建实例,然后调用do_add()输出列表元素之和的方法。由于内部工作是隐藏的,因此整体应用更容易理解。

4.使用程序编码风格

程序样式依赖于过程调用来创建模块化代码。通过将开发人员可以轻松地观看的小块,这种方法简化了您的应用程序代码。即使程序编码是一种较旧的应用程序开发形式,它仍然是一个可行的方法,可以借助逐步执行的任务。这是使用程序编码风格的一个例子我的列表

def do_add(any_list):x在any_list中的x:sum + = x return sum print(do_add(my_list))

使用功能,do_add(),在这种情况下简化整个代码。执行仍然是系统的,但代码更容易理解,因为它被闯入块。但是,此代码遭遇了与状态限制执行选项的必要范例相同的问题,这意味着在解决复杂问题时,这种方法可能不会有效地使用硬件。

选择编码风格

开发人员会在编码风格的不同之处 - 每个人都有一个风格最好的意见。(我已经列出了我个人的偏好订单的四种风格。)

关于Python的令人惊叹的事情是它让您在特定情况下选择最适合您的编程范式。它甚至可以在Python应用程序中混合和匹配范例,只要您记得将包裹限制为输入和输出(保持代码模块)。没有规则说您不能根据需要组合样式。Python不会在解释应用程序的中间停止,并在混合样式时显示样式错误。

如果您不确定哪种编码风格最适合给定任务,请尝试多个样式以确定哪一个有助于您解决问题最快,并且具有最少的复杂代码。同样,您可能会发现单一样式并不真正解决问题,并且您希望在同一应用程序上融入多种样式。

最后,当您找到一个有效的问题解决问题时,请务必清楚地记录它,以便您 - 或其他程序员 - 可以在后面工作,而无需重新发明轮子。当混合编程样式时,这尤其重要,因为灵活性的增加有时会降低清晰度。

做得恰到好处,今天解决的问题可以成为明天的时间节省时间模板,选择正确的Python编程风格。

John Mueller是一家自由撰稿人和技术编辑,拥有108本书和600多篇文章,致力于从网络到人工智能以及数据库管理到下车编程的主题。他目前的书籍覆盖Python为初学者,人工智能(AI),机器学习,数据科学,C#7.0和Amazon Web服务(AWS)。您可以在http://blog.johnmuellbooks.com/上阅读他的博客。查看帖子

对新遗物博客的写作有兴趣吗?亚搏体育登入网送我们一个球场!!