这些是我最喜欢 Python 的一些原因
我从1998年就开始使用Python,当时它是一种鲜为人知的语言。那是 Perl 在开放源代码世界中相当流行的时期,但是从我发现 Python 的那一刻起,我就相信它了。我的父母经常提醒我,我曾经说过“Python将会是一件大事”和“有一天我就能找到工作”之类的话。 虽然经过了一段时间,但我的预言成真。
这种语言有太多值得喜爱的地方。 以下是我继续如此热爱 Python 的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使用空格作为语法,因此在其他代码中无需使用开始{和end }表示法。
Python还避免了对分号的需求,分号是使其他语言易于阅读的语法糖。Python在我眼中更容易阅读,并且感觉与伪代码非常接近,有时使我感到惊讶!
在编程语言设计中,原语是最简单的可用元素。 Python易于阅读的事实并不意味着它不是一种功能强大的语言,这源于它对原语的使用。 我最喜欢的使Python易于使用和先进的示例是其生成器的概念。
假设您有一个简单的二叉树结构,左右都是值。 您希望能够轻松地按顺序遍历它。 您通常要寻找“小”元素,以便在找到正确的值后立即退出。 到目前为止,这听起来很简单。 然而,有许多种算法可以对元素进行决策。
其他语言会让您编写一个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循环中使用该迭代器,则只会执行所需的次数,而不再执行。 真是太厉害了。
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 实现中默认的宝藏。
对于标准库中没有的所有内容,都有一个巨大的生态系统来支持新的Pythonista,从令人兴奋的软件包到专门针对该语言的文本编辑器插件。 PyPi上托管了约20万个项目(在撰写本文时)并且还在不断发展,每个人都有一些东西: 数据科学,异步框架 ,Web框架 ,或者只是使远程自动化更容易的工具。
Python 社区是令人惊奇的。它是第一个采用行为准则的组织之一,先是针对 Python Software Foundation,后来又针对 PyCon。对于多样性和包容性有一个真正的承诺:这个主题的博客文章和会议演讲被 Python 社区成员频繁、深思熟虑和广泛阅读。
虽然这个社区是全球性的,但是当地社区也有很多很棒的活动。本地 Python 聚会是结识那些聪明、有经验并且渴望帮助的优秀人士的好地方。很多见面会都会明确地留出时间给有经验的人,帮助那些想学习新概念或者用他们的代码解决问题的新人。我的本地社区在我开始 Python 之旅的时候花时间支持我,我很荣幸能够继续回馈给新的开发人员。
无论你是参加本地社区的聚会,还是花时间在 IRC、 Slack 和 Twitter 的在线 Python 社区,我相信你都会遇到那些可爱的人,帮助你成为一名成功的开发人员。
关于Python有很多值得爱的东西,现在您知道我最喜欢的部分肯定是人。
我在世界各地的社区中发现了善良,体贴的Python高手,并且为需要帮助的人提供的社区投资额令人难以置信。 除了我遇到的那些知识之外,简单、干净、功能强大的Python语言还为开发人员提供了足够多的东西,使他们能够熟练地从事软件开发或成为喜欢玩有趣语言的业余爱好者。如果你有兴趣学习你的第一门语言或者一门新的语言,考虑一下 Python,让我知道我能帮上什么忙。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系外文翻译,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。