最近我在Reddit上讨论了为什么有人会选择使用Python而不是其他编程语言。讨论很激烈,于是我决定写一篇文章。
首先,不妨讲讲我对Python的看法。这是我喜欢的一种编程语言,可以用于众多应用,不过我同意所有语言都有其缺点。我的确认为Python是适合专业人员使用的一种优秀语言,但也适合初学者探索迷人的编程世界。
话虽如此,我会在每个项目中使用Python吗?可能不会。但是Python在一些方面很擅长,我想重点介绍这方面并解释原因。
- API开发
- 数据科学/人工智能
- 脚本编写
API开发
有一些出色的API开发框架可与Python结合使用,其中两个是开发社区最喜欢的框架:Django和Flask。
围绕API开发的讨论立即进入了Web框架的方向。为什么?这么说吧,如果你想致力于为API编写代码,就不该编写自己的Web服务器或框架。
一些人也主张将Python用于Web开发,不过我不喜欢将那些框架用于前端,我更喜欢使用React、VueJS或Ember构建前端。
如果你开始使用Python开发API,很可能最终会使用Django或Flask。所以你可能会问:我该使用哪一个?
Django VS Flask
这两种框架都很棒,而且适用于大多数情况。然而,它们遵循不同的理念。一些人更喜欢其中一种,两边都有充分的理由。由于这两种框架本质上大不相同,因此我仅介绍两者的大体区别,不过你应该详细了解,才能确定哪种框架最适合你和你的项目。
理念:
- Flask是一种简约的框架。它提供了简单性、灵活性和细粒度控制。它是非固执己见的(你可以用它来做你想做的任何事情)。
- 相反,Django是一个综合性框架。你可以直接为应用程序获得库、管理面板、数据库界面、ORM甚至可靠的目录结构。
如果你想了解更多的相关内容,请参阅此文:https://testdriven.io/blog/django-vs-flask/。
数据科学/人工智能
无论何时想处理数据(比如数据抓取、数据分析、可视化、机器学习或AI),Python都是最好的朋友。这每一项任务都有许多重要的库,它们是出色的库,在研究环境和生产环境中使用率很高。
我不会详细介绍这些库,但想提及几个库:Pandas、Numpy、Matplotlib、Seaborn、Tensorflow、Pytorch、scikit-learn、Keras、NLTK和OpenCV。
由于这些库,你可以构建涉及几乎任何数据科学或AI主题的生产就绪的项目。虽然将Python用于其中一些应用存在一些缺点(比如性能),但在许多情况下,Python会是不错的选择。
我们在谈论哪一种项目?
通常,Python在数据科学和AI有许多应用。我在这里提及使用Python的几个常见项目:
- 时间序列分析
- 销售预测
- 语言处理
- 情绪分析
- 推荐系统(比如音乐和视频等)
- 分类
- 计算机视觉
- 自动驾驶汽车
脚本
脚本通常指旨在自动执行简单任务的小程序(通常通过命令行来执行)。
下面举几个例子表明我自己编写的脚本,这些脚本使我的日常工作流程实现自动化:
- 我的博客:我使用Evernote收集在网上看到的所有内容,还撰写帖子。但是需要发布时,我记下那些笔记并将其作为草稿上传到我的博客中。这个过程在Python上自动进行:每当我将笔记标记为“准备发布”,我会运行Python脚本:将笔记、格式和草稿拷贝到我的博客系统中。当然,实际发布之前我总需要进行一番手动修改(主要是由于Evernote奇怪的HTML输出)。
- 备份:我喜欢在云端备份资料,但我也在外部硬盘中留一份副本。我通常加密放到云端的所有内容(Evernote除外,它不允许我这么做)。但当我将备份内容放到硬盘时,会使用硬盘加密,我不想对其进行双重加密。当我想把数据备份到硬盘时,会运行一个python脚本,该脚本解密数据,然后将数据移到硬盘。
结论
Python是一种用途很广泛的编程语言,由于其社区和库,你几乎可以用它来做想做的任何事情,不过有时你不该使用它。没有哪种语言一应俱全:它们都有优缺点,Python也不例外。
话虽如此,我确实认为Python很棒;如果你很好奇,可以用它构建从游戏到嵌入式系统的各种应用。当然,那些可能不是生产就绪的项目。
原文标题:Python is great, but stop using it for every damn project