自从 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 易于使用和高级的例子是它的 生成器概念。
想象一下,您有一个简单的二叉树结构,其中包含value
、left
和right
。您想按顺序轻松地遍历它。您通常在寻找“小”元素,以便在找到正确的值后立即退出。到目前为止,这听起来很简单。但是,有很多种算法可以决定元素。
其他语言会让您编写一个 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,并让我知道我能如何帮助您。
3 条评论