我喜欢 Python 的 5 个理由

以下是我喜欢 Python 的几个原因。
396 位读者喜欢这篇文章。
Raspberry Pi and Python

Raspberry Pi Foundation. CC BY-SA 4.0.

自从 1998 年 Python 还是一个鲜为人知的语言时,我就开始使用它了。 那时Perl 在开源世界中非常流行,但是自从我发现 Python 的那一刻起,我就相信它。我的父母喜欢提醒我,我过去常说:“Python 将会变得很重要”和“有一天我可以用它找到工作”。 过了一段时间,我的预言实现了。

这个语言有很多值得喜欢的地方。以下是我仍然如此热爱 Python 的 5 个主要原因(倒序排列,以增强期待感)。

5. Python 读起来像可执行的伪代码

伪代码是指编写编程逻辑,而不遵循特定语言的确切语法和语法的概念。自从成为 Python 程序员以来,我就停止编写大量的伪代码,因为它的实际设计满足了我的需求。

即使您不太了解该语言,Python 也可能很容易阅读,这很大程度上是设计使然。它因代码运行的空格要求而相当出名。空格对于任何语言都是必需的——它使我们能够将本句中的每个词都视为不同的词。大多数语言都有关于空格使用的建议或“最佳实践”,但 Python 采取了大胆的步骤,要求标准化。对我来说,这使得阅读代码并准确了解它在做什么变得非常简单。

例如,这是一个经典冒泡排序算法的实现。

def bubble_sort(things):

    needs_pass = True

    while needs_pass:

        needs_pass = False

        for idx in range(1, len(things)):

            if things[idx - 1] > things[idx]:

                things[idx - 1], things[idx] = things[idx], things[idx - 1]

                needs_pass = True

现在,让我们将其与 Java 中的此实现进行比较。

public static int[] bubblesort(int[] numbers) {
    boolean swapped = true;
    for(int i = numbers.length - 1; i > 0 && swapped; i--) {
        swapped = false;
        for (int j = 0; j < i; j++) {
            if (numbers[j] > numbers[j+1]) {
                int temp = numbers[j];
                numbers[j] = numbers[j+1];
                numbers[j+1] = temp;
                swapped = true;
            }
        }
    }
    return numbers;
}

我很欣赏 Python 要求缩进以指示块的嵌套。虽然我们的 Java 示例也很好地使用了缩进,但这不是必需的。花括号是确定块的开始和结束的,而不是空格。由于 Python 使用空格作为语法,因此无需在其他代码中使用开始 { 和结束 } 符号。

Python 还避免了对分号的需求,分号是一种使其他语言更具可读性的语法糖。 Python 在我的眼中更容易阅读,并且它感觉非常接近伪代码,有时甚至让我惊讶的是,它是可以运行的!

4. Python 具有强大的原语

在编程语言设计中,原语是最简单的可用元素。 Python 易于阅读的事实*不*意味着它不是一种强大的语言,这源于它对原语的使用。我最喜欢的使 Python 易于使用和高级的例子是它的 生成器概念。

想象一下,您有一个简单的二叉树结构,其中包含valueleftright。您想按顺序轻松地遍历它。您通常在寻找“小”元素,以便在找到正确的值后立即退出。到目前为止,这听起来很简单。但是,有很多种算法可以决定元素。

其他语言会让您编写一个 visitor,您可以在其中通过将您的“这是正确的元素吗?”放入一个函数并通过函数指针调用它来反转控制。您可以在 Python 中执行此操作。但是您不必这样做。

def in_order(tree):

    if tree is None:

        return

    yield from in_order(tree.left)

    yield tree.value

    yield from in_order(tree.right)

生成器函数将返回一个迭代器,如果在 for 循环中使用,它将仅在需要时执行,而不会执行更多操作。这很强大。

3. Python 标准库

Python 有一个很棒的标准库,其中包含许多隐藏的瑰宝,直到我花时间浏览所有可用的函数、常量、类型等等。我个人最喜欢的是itertools模块,它在功能编程模块下列出(是的,Python 支持功能编程!)。

它非常适合与您的技术面试官开玩笑,例如使用这个巧妙的小解决方案来解决经典的FizzBuzz 面试问题

fizz = itertools.cycle(itertools.chain(['Fizz'], itertools.repeat('', 2)))

buzz = itertools.cycle(itertools.chain(['Buzz'], itertools.repeat('', 4)))

fizz_buzz = map(operator.add, fizz, buzz)

numbers = itertools.islice(itertools.count(), 100)

combo = zip(fizz_buzz, numbers)

for fzbz, n in combo:

    print(fzbz or n)

快速的网页搜索会显示,这不是解决 FizzBuzz 的最直接的方法,但它肯定很有趣!

除了玩笑之外,itertools模块以及heapq 和 functools 模块是 默认情况下在 Python 实现中提供的宝库。

2. Python 生态系统非常庞大

对于标准库中没有的所有内容,都有一个庞大的生态系统来支持新的 Pythonista,从令人兴奋的包到专门针对该语言的文本编辑器插件。截至撰写本文时,PyPi 上托管了大约 200,000 个项目并且还在不断增长,总能找到适合每个人的内容:数据科学异步框架Web 框架,或者只是使远程自动化更容易的工具。

1. Python 社区很特别

Python 社区非常棒。它是最早采用行为准则的社区之一,首先是针对 Python 软件基金会,然后是针对 PyCon。人们真正致力于多元化和包容性:关于这一主题的博客文章和会议演讲很频繁、经过深思熟虑,并且被 Python 社区成员广泛阅读。

虽然社区是全球性的,但本地社区也有很多很棒的活动。本地 Python 聚会是结识聪明、经验丰富且乐于助人的优秀人士的好地方。许多聚会都会明确预留时间,让经验丰富的人帮助想要学习新概念或解决代码问题的新手。当我的 Python 之旅开始时,我的本地社区花时间支持我,我很荣幸能够继续回馈新的开发人员。

无论您是参加当地社区聚会,还是与 IRC、Slack 和 Twitter 上的在线 Python 社区共度时光,我相信您都会遇到可爱的人,他们希望帮助您成为一名成功的开发人员。

总结一下

Python 有很多值得喜爱的地方,现在您知道我最喜欢的部分绝对是人。

我在世界各地的社区中发现了善良、体贴的 Pythonistas,并且社区为有需要的人提供的投资量令人鼓舞。除了我遇到的人之外,简单、干净和强大的 Python 语言为任何开发人员提供了足够的知识来掌握他们的软件开发职业之路,或者作为业余爱好者享受使用一种有趣的语言的乐趣。如果您有兴趣学习您的第一种或一种新语言,请考虑 Python,并让我知道我能如何帮助您。

接下来要阅读的内容
标签
Moshe sitting down, head slightly to the side. His t-shirt has Guardians of the Galaxy silhoutes against a background of sound visualization bars.
自 1998 年以来,Moshe 一直参与 Linux 社区,帮助组织 Linux “安装派对”。自 1999 年以来,他一直在编写 Python 程序,并为核心 Python 解释器做出了贡献。在“DevOps/SRE”这些术语出现之前,Moshe 就已经是 DevOps/SRE 了,他非常关心软件可靠性、构建可重现性以及其他此类事情。

3 条评论

社区排名第一。反映了我的想法?

我有一些 Java 经验,但我正在考虑转向 Python,您的文章非常有趣并且鼓励我开始我的 Python 之旅

谢谢

我喜欢和不喜欢 Python。

我真正喜欢 Python 的是,至少目前,它比 Perl 的碎片化程度要低一些。 Perl 有两个弱点。 首先,它的对象是硬塞进去的,不是很干净。 Python 没有对象方面的问题。 但是,另一个问题是第三方模块不是用 Perl 编写的(即用 C 编写的),或者随着 Perl 的变化而没有随着时间的推移进行维护。 Python 最终也会遇到同样的库腐烂问题,尽管它的基本库更加广泛,这种情况可能会少一些。

我讨厌 Python 的原因...主要是因为它的作者和社区“不让”那些喜欢使用花括号进行块标记的程序员使用它们,并且不尊重他们。 允许花括号并不会破坏任何东西。 而且,作为一个学习过并编写过小型编译器的人,我真的对空格的歧义感到不安——并且在使用与我喜欢使用的空格/制表符约定不同的文件中遇到过此类问题。 我对现有标记(: 和空格)作为默认值没有任何问题,我只是不喜欢在强制我使用花括号替代方案时,被强行灌输给我。 (而且,是的,我见过那些愚蠢的 #} 玩笑。)

© . All rights reserved.