“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

Python 那么火,到底可以用来做什么?

  • 2018-08-01
  • 本文字数:4314 字

    阅读完需:约 14 分钟

如果您正在考虑学习 Python,或者您最近刚开始学习,您可能会问自己:

“我到底可以用 Python 做什么?”

这是个棘手的问题,因为 Python 有很多用途。但是随着时间的推移,我发现 Python 主要可用于一下三个方面:

  • Web 开发
  • 数据科学——包括机器学习、数据分析和数据可视化
  • 脚本编写

我们就依次来看看吧。

Web 开发

像 Django 和 Flask 这样基于 Python 的 Web 框架最近在 web 开发中变得非常流行。

这些 web 框架帮助您用 Python 创建服务器端代码(后端代码)。这些代码在您的服务器上而不是在用户设备以及浏览器上(前端代码)运行。如果您不熟悉后端代码和前端代码之间的区别,请参阅下面脚注。

但是,等等,我为什么需要 web 框架呢?

那是因为 web 框架让构建通用后端逻辑变得更简单了。这包括把不同的 URL 映射到 Python 代码块、处理数据库和生成用户在浏览器中看到的 HTML 文件。

我应该用哪个 Python web 框架?

DjangoFlask是两种最流行的 Python web 框架。如果您刚刚开始学习,那么可以用它们中的任何一个。

Django 和 Flask 有什么区别?

Gareth Dwyer 有篇关于这个话题的文章写得非常好,我在这里引用一下:

< 引用开始 >

主要的对比:

  • Flask 提供简洁、灵活和细粒度控制。它很是客观(让您决定如何实现想要的东西)。
  • Django 提供一种包罗万象的体验:您可以获得管理面板、数据库接口、 ORM(object-relational mappling,对象关系映射),还有开箱即用的应用程序和项目的目录结构。

您应该选择:

  • Flask,如果您专注于体验和学习机会,或者您想对选用哪个组件有更大的控制权(例如您想使用哪个数据库和如何与它们交互)。
  • Django,如果你专注于最终的产品。特别是如果您正在做一个简单的应用程序(如一个新闻网站、电子商店,或者博客)并且希望有一个直接明了的做法。

</ 引用结束 >

换句话说,如果您是位初学者,Flask 可能是个更好的选择,因为用到的组件比较少。如果您想要更多的定制,那么 Flask 也是个更好的选择。

而且,根据我的数据工程师朋友 Jonathan T Ho 的看法,Flask 更适合创建那些所谓的 REST API 的东西,因为它比 Django 更灵活。

另一方面,如果您想构建一些简单的东西,Django 会让您更快地达到目标。

好,我们接着谈谈下一个!

数据科学 —— 包括机器学习、数据分析和数据可视化

首先,我们来回顾一下什么是机器学习。

我认为,解释什么是机器学习的最好方法莫过于举个例子。

假设您想开发一个程序用于自动检测图片中的内容。

因此,对于下面的这张图片(图片 1),您希望您的程序能识别出这是条狗。



图 1

而对于下面的这张图片(图片 2),您希望您的程序能识别出它是张桌子。



图 2

您也许会说,我可以用几行代码搞定。例如,如果在图片上有很多淡棕色的像素,那么我们可以说那是狗。

或者,您可以找到在照片中检测边缘的方法。然后,您也许会说,如果有很多直边,那么那就是一张桌子。

但是,这种方法很快就遇到麻烦了。如果图片上是条没有棕色毛发的白狗怎么办?如果图片上显示的只是桌子的圆形部分呢?

轮到机器学习大显身手了。

机器学习可实现一些算法,能自动检测给定输入中的模式。

比如,您给机器学习的算法提供 1000 张狗的照片和 1000 张桌子的照片。那么,它将会学习区别狗和桌子。当您给出一张狗或桌子的新图片时,它将能够识别出是狗还是桌子。

我认为,这和婴儿学习新事物有点类似。婴儿是如何知道一样东西看起来像狗,而另一样东西看起来像桌子呢?可能就是从大量的例子中学到的。

您也许不会明确地告诉一个婴儿:“如果一样东西是毛茸茸的,并且有着淡棕色的毛发,那么它可能是条狗。”

您可能只是说:“那是条狗。这也是条狗。这是桌子。那也是桌子。”

机器学习算法的工作方式大致相同。

您可以把同样的想法应用于:

  • 推荐系统(像 YouTube、Amazon 和 Netflix 在用的)
  • 面部识别
  • 声音识别

您可能听说过的流行的机器学习算法包括:

  • 神经网络
  • 深度学习
  • 支持向量机
  • 随机森林

您可以使用任何一个上述算法来解决我刚才解释过的图片标注问题。

将 Python 用于机器学习

有一些流行的 Python 机器学习库和框架,其中最流行的两个是scikit-learnTensorFlow

  • scikit-learn 附带了一些更流行的内置机器学习算法。我刚才提到了其中的几个。
  • TensorFlow 更像是个低级库,它允许您构建自定义机器学习算法。

如果您刚开始一个机器学习项目,那么我建议您先用 scikit-learn。如果您开始遇到效率问题,那么我建议用 TensorFlow。

我应该如何学习机器学习呢?

要学习机器学习基础知识的话,我建议选择斯坦福加州理工学院的机器学习课程。

请注意,您需要微积分和线性代数的基本知识以理解这些课程中的某些内容。

然后,我会用 Kaggle 来练习从课程中学到的知识。Kaggle 是个网站,大家在这个网站上比试谁能对一个给定的问题构建出最佳的机器学习算法。网站上也有给初学者用的好教程。

那么数据分析和数据可视化呢?

为了帮助您理解,我在这里给您举个简单的例子。假设,您为一家在线销售产品的公司工作。

那么,作为数据分析师,您也许会画一个类似的条形图。



条形图 1- 由 Python 生成

从这张图上,我们可以看到,在某个特定的周日,对于某件产品来说,男性购买了 400 多件,而女性购买了大约 350 件。

作为一个数据分析师,您也许会对其中的差异做出几个可能的解释。

一个很显然的可能解释是,该产品在男性中比在女性中更流行。另一个可能的解释是,样本量太小,这个差异是偶尔产生的。还有一个可能的解释是,在周日,由于某种原因,男性比女性更倾向于购买该产品。

为了搞明白哪个解释是正确的,您可能绘制另一张图,如下图所示:



折线图 1- 由 Python 生成

我们不再只显示周日的数据,而是整整一周的数据。正如您所见,从这张图中,我们可以看到,这种差异在不同的日子里很一致。

从这个简单的分析中,您可能得出了结论,对这种差异,一个最有说服力的解释就是,这个产品更受男性而不是女性欢迎。

另一方面,如果您看到是如下所示的图呢?



折线图 2- 同样由 Python 生成

那么,如何解释出现在周日的差异呢?

您也许会说,也许出于某种原因,男性在周日更倾向于购买该产品。或者,也许只是巧合,男性在周日购买了更多的该产品。

好了,这是个简化的例子,展示了数据分析在真实世界中看起来的样子。

我在谷歌和微软工作的时候做过数据分析,跟这个例子非常相似,只是更复杂一些罢了。事实上,我在谷歌工作时,是用 Python 来做这种分析,而我在微软的时候,用的是 JavaScript。

在这两家公司工作的时候,我用 SQL 从数据库中提取数据。然后,我会用 Python 和 Matplotlib(在谷歌工作时)或 JavaScrip 和 D3.js(在微软工作时)进行数据可视化和分析。

用 Python 进行数据分析 / 可视化

最流行的数据可视化库之一是 Matplotlib

刚开始学习的话,它是个不错的库,因为:

  • 它容易上手
  • 其他一些库,如 seaborn 是以它为基础的。因此,学习 Matplotlib 可以帮助您随后学习其他库。

我应该如何学习用 Python 进行数据分析 / 可视化?

首先,您应该学习数据分析和可视化的基础知识。我在网上没有找到相关的好资源。因此,最终,我在 YouTube 上做了相关的视频(用 Python 和 Matplotlib 进行数据分析 / 可视化的入门课程)。

我还在 Pluralsight 上做了相关的整个课程,如果您报名参加他们的 10 天免费试用,您就可以免费获得这个课程。

这两个我都推荐给您。

学习了数据分析和可视化基础知识之后,在 Coursera 和 Khan Academy 上学习统计的基础知识也是很有帮助的。

脚本编写

什么是脚本编写?

通常,脚本编写是指编写小程序以让简单任务自动化。

我在这里给您举个来自我个人经验的例子。

我曾在日本的一家小型初创企业工作,我们有个电邮支持系统,用来回复客户通过电邮给我们提出的问题。

我在那里工作的时候,我的任务是计算含有特定关键字的电邮数量,这样我们才可以分析我们收到的电邮。

我们本来应该用人工统计,但是,我写了个简单的程序 / 简单的脚本来自动完成该任务。

事实上,那时我们是用 Ruby 编写脚本,但是,对于这样的任务来说,Python 也是个不错的语言选择。Python 适合这种类型的任务主要是因为它有相对简单的语法并且容易编写。用它来写些小程序并进行测试花不了多少时间。

那些嵌入式应用呢?

对于嵌入式应用,我不在行,但是我知道 Python 可以配合 Rasberry Pi 工作。它在那些硬件发烧友中非常流行。

那么游戏呢?

您可以用 PyGame 库来开发游戏,但是,它不是最流行的游戏引擎。如果把游戏作为兴趣爱好,您可以用它来构建项目,但是,如果您真的要做游戏开发,我个人不建议选择它。

相反,我推荐您用 Unity 的 C#脚本,它是最流行的游戏引擎之一。它允许您在很多平台上构建游戏,这些平台包括:Mac、Windows、iOS 和安卓。

那么,桌面应用呢?

您可以用 Python 的 Tkinter 来开发,但是它似乎不是最流行的选择。

相反,用 J ava、C#和 C++ 等语言开发桌面应用看起来更流行。

最近,一些公司也已经开始使用 JavaScript 来创建桌面应用程序了。

比如,Slack 的桌面应用程序是用 Electron 来构建的。它允许您用 JavaScript 来构建桌面应用。

就我个人来说,如果我要构建一个桌面应用,我会用 JavaScript。它允许您复用 web 版本的某些代码(如果有的话)。

选 Python 3 还是 Python 2?

我会推荐 Python 3,因为它更现代化,并且目前它更受欢迎。

脚注:对于后端代码和前端代码的的说明(万一您对这些术语不熟悉)。

假设,您想做个类似于 Instagram 的东西。

那么,您需要为每种想支持的设备创建前端代码:

  • Swift 用于 iOS 设备
  • Java 用于安卓设备
  • JavaScript 用于 web 浏览器

每组代码都将在对应类型的设备 / 浏览器上运行。这组代码将决定应用的布局看上去的样子,单击时按钮的外观等等。

但是,您仍然需要存储用户信息和照片的能力。除了在用户的设备商储存这些信息,您还会希望将这些信息储存在服务器上,这样,每个用户的关注者就能看到用户的照片。

这里就是后端代码 / 服务器端代码的用武之地了。您需要编写后端代码以执行以下操作:

  • 持续跟踪谁在关注谁
  • 压缩照片,以免占据太多存储空间
  • 在发现功能中给每个用户推荐照片和新账号

好了,这就是后端代码和前段代码之间的区别。

顺便说一下,Python 不是编写后端 / 服务器端代码的唯一好选择。还有很多其他流行的选择,包括 Node.js,它是基于 JavaScript 的。

阅读英文原文: What exactly can you do with Python? Here are Python’s 3 main applications .

感谢张婵对本文的策划和审校。

2018-08-01 18:104813
用户头像

发布了 199 篇内容, 共 81.4 次阅读, 收获喜欢 293 次。

关注

评论 1 条评论

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

坚持五件事,带你走出迷茫困境!

博文视点Broadview

Rancher 2.6 全新 Monitoring 快速入门

Rancher

Kubernetes k8s rancher

运行时应用自我保护(RASP):应用安全的自我修养

SEAL安全

RASP

Kafka ETL 之后,我们将如何定义新一代实时数据集成解决方案?

tapdata

kafka ETL 数据集成 实时数据 DaaS

java培训 | Java设计模式之装饰者设计模式

@零度

JAVA开发

Vone新闻 | 旺链科技赋能众享链网自组织管理,打造企业级联盟DAO

旺链科技

区块链 产业区块链 DAO 自组织协作

Go 语言使用 MySQL 的常见故障分析和应对方法

百度Geek说

Go MySQL

java程序员培训 | Java设计模式之桥接模式

@零度

设计模式 JAVA开发

攻防演练合集 | 3个阶段,4大要点,蓝队防守全流程纲要解读

青藤云安全

网络安全 网络攻防 安全服务 攻防演练

大数据培训 | Flink如何监控恶意登录

@零度

大数据

navicat定时任务无效

源字节1号

Angular 服务器端渲染应用一个常见的内存泄漏问题

Jerry Wang

typescript 前端开发 angular Spartacus 6月月更

消息队列的丢失、重复与积压问题

Damon

6月月更

开发增效利器—2022年VsCode插件分享

中原银行

ide vscode 插件 中原银行 降本增效

如何使用 Django Forms 创建表单?

海拥(haiyong.site)

Python django 6月月更

如何用 Redis 实现一个分布式锁

Ayue、

redis 分布式锁

想学习eTS开发?教你开发一款IQ-EQ测试应用

HarmonyOS开发者

HarmonyOS

得物多活架构设计之路由服务设计

得物技术

架构 高可用 架构设计 双活 路由

使用Mycat进行MySQL单库分表

迷彩

架构 运维 mycat 分布式数据库中间件 6月月更

成熟的知识管理,应具备哪些条件?

小炮

【云舟说直播间】-数字安全专场明天下午正式上线

浪潮云

云计算

“芯”有灵“蜥”,万人在线!龙蜥社区走进 Intel MeetUp 精彩回顾

OpenAnolis小助手

开源 直播 Meetup 龙蜥社区 走进 Intel

直播带货app源码搭建中,直播CDN的原理是什么?

开源直播系统源码

软件开发 直播带货 直播系统 app源码

5 个关于 NFT 的技术漏洞

devpoint

区块链 以太坊 NFT 6月月更

DevEco Device Tool 助力OpenHarmony设备开发

OpenHarmony开发者

OpenHarmony

不止于观测|阿里云可观测套件正式发布

阿里巴巴云原生

阿里云 云原生 可观测 套件

实战监听Eureka client的缓存更新

程序员欣宸

Java SpringCloud 6月月更

Linux开发_摄像头编程(实现拍照、网页监控功能)

DS小龙哥

6月月更

quarkus+saas多租户动态数据源切换实现简单完美

weir威尔

SaaS 多租户 Quarkus 动态数据源

《Java编程思想》作者Bruce Eckel新作,到底做了哪些升级?

图灵教育

Java

并购增资或将有望启动东软越通新动能?

E科讯

Python那么火,到底可以用来做什么?_Python_YK Sugi_InfoQ精选文章