写点什么

爱上 Python 的五个理由

  • 2019-11-07
  • 本文字数:2564 字

    阅读完需:约 8 分钟

爱上Python的五个理由


关于 Python 有太多值得去爱的地方了,简单、干净、强大的 Python 语言让任何开发人员都有足够的能力在他们的软件开发生涯中充满自信,我们可以从中寻找到使用编程语言的乐趣,阅读本文,你会喜欢上使用 Python 的。


Python 中有很多我喜欢的特性。


Python 在 1998 年诞生,开始很长一段时间无人问津,但我一直在使用它。当时Perl在开源世界中非常流行,但是我从一开始就认定了 Python。我父母喜欢经常拿我之前说的话打趣我,我曾经说过“Python 将会成为很重要的语言”、“我未来将依靠 Python 找到一份工作”。过了一段时间,我的预言应验了。


这门语言有太多让人喜爱的地方了。以下是我如此热爱 Python 的 5 个最重要的原因(用反序的方式表述,以构建预期)。

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

伪代码是这样一种概念,它不遵循特定语言的确切句法和语法来编写编程逻辑。自从成为一名 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。您希望按顺序轻松地对其进行迭代。您通常会寻找“小”元素,以便在找到正确的值时立即退出。到目前为止,这听起来很简单。然而,有很多种算法可以对元素进行操作。


其他语言会让你写一个访问者,这样你可以在这个函数中判断“这是正确的元素吗?”你也可以在 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这个经典面试问题的小妙招:


通过网络搜索后会发现这并不是解决 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 有太多值得去爱的地方了,现在你知道我最喜欢的部分肯定是关于人的。


我在世界各地的社区中发现了善良、有思想的 Python 从业者,社区为有需要的人提供的投资数额令人鼓舞。除了我遇到的那些人之外,简单、干净、强大的 Python 语言让任何开发人员都有足够的能力在他们的软件开发生涯中充满自信,或者作为一个业余爱好者享受使用有趣的语言的乐趣。如果您对学习您的第一种或一种新语言感兴趣,请考虑使用 Python,并告诉我需要提供怎样的帮助,我会尽力而为。


英文原文:


https://opensource.com/article/19/10/why-love-python


2019-11-07 12:152347
用户头像
刘燕 InfoQ高级技术编辑

发布了 1123 篇内容, 共 608.9 次阅读, 收获喜欢 1982 次。

关注

评论

发布
暂无评论
发现更多内容

数智先锋 | 告别运维黑盒!豪鹏科技×Bonree ONE构建全栈智能可观测体系

博睿数据

直播预告 | 破解能源转型痛点!全链路可观测如何助力能源业高质量发展?

博睿数据

龙蜥邀您参加 AICon 全球人工智能开发与应用大会,探索 AI 应用边界

OpenAnolis小助手

AI 操作系统 龙蜥社区

基于扩散先验的自适应多模态蛋白质即插即用框架

qife122

机器学习 扩散模型

征程 6 | 自定义查表算子实现量化部署

地平线开发者

自动驾驶 算法工具链 地平线征程6

开源免费!敲敲云APaaS零代码平台,做轻流/明道本地化的平替产品

JEECG低代码

零代码 无代码平台 流程引擎 敲敲云 表单引擎

Databend 向量索引:加速 AI 应用的数据引擎

Databend

深度学习如何优化某中心包装减废方案

qife122

自然语言处理 深度学习

加密货币交易所开发:如何打造安全、高并发的数字资产交易平台?

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

微软SharePoint五重漏洞剖析:ToolShell攻击链技术内幕

qife122

漏洞分析 零日漏洞 反序列化漏洞

用“数”创新,聚“数”赋能!中石大携手和鲸主办 2025 年青岛市公共数据创新应用大赛圆满落幕!

ModelWhale

中国石油大学 和鲸 公共数据创新应用大赛

PPT文件怎么添加视频?3个PPT高级技巧盘点!

职场工具箱

效率工具 PPT 办公软件 AI生成PPT

别再靠加人提效了!天润融通AI训练师正在重构客户服务模式

天润融通

如何轻松编写Rootkit:Linux内核系统调用拦截技术解析

qife122

Linux内核 漏洞挖掘

工业管理 项目管理经验总结(1)

万里无云万里天

项目管理 工厂运维

基于OpenHarmony的Nexus_Geometry_Nano_Board亮灯实验

华为云开发者联盟

公链开发竞争白热化:如何设计下一代高性能、可扩展的区块链基础设施?

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 公链开发代币开发

在AI技术快速落地的时代,挖掘数据库连接工具的真实需求——某知名MySQL协议框架需求洞察

qife122

需求分析 AI辅助开发

从零开始学MCP(1)| MCP 协议核心原理解析

测吧(北京)科技有限公司

人工智能 MCP

计算机视觉构建地球数字孪生体

qife122

计算机视觉 卫星遥感

夜莺监控的几种架构模式详解

巴辉特

Prometheus 夜莺监控 Victoriametrics

深度学习为何有效及其局限性解析

qife122

机器学习 深度学习

链游(GameFi)开发破局:如何平衡可玩性与经济模型可持续性?

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

Dify入门篇(4)| 初识 Dify 控制台:工作区与应用管理逻辑

测吧(北京)科技有限公司

体验为王时代,天润融通助力台铃以服务撬动品牌长期价值

天润融通

Dify入门篇(4)| 初识 Dify 控制台:工作区与应用管理逻辑

测吧(北京)科技有限公司

人工智能

全球客服行业集体紧张,GPT-5带来的3个颠覆你不可不知

天润融通

Databend 向量索引:加速 AI 应用的数据引擎

Databend

从0到1:构建下一代去中心化应用(DApp)的全栈开发指南

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 代币开发 交易所开发公链开发

华为元服务“服务商”生态加速计划正式启动,共拓服务分发新蓝海

新消费日报

法国农业部如何利用Elastic技术监控商业捕鱼业

qife122

数据分析 Elastic技术

爱上Python的五个理由_AI&大模型_Moshe Zadka_InfoQ精选文章