Python 简介
Python 在诞生之初,因为其功能不好,运转功率低,不支持多核,根本没有并发性可言,在计算功能不那么好的年代,一直没有火爆起来,甚至很多人根本不知道有这门语言。
随着时代的发展,物理硬件功能不断提高,而软件的复杂性也不断增大,开发效率越来越被企业重视。因此就有了不一样的声音,在软件开发的初始阶段,性能并没有开发效率重要,没必然为了节省不到 1ms 的时间却让开发量增加好几倍,这样划不过来。也就是开发效率比机器效率更为重要,那么 Python 就逐渐得到越来越多开发者的亲睐了。
在前些年,云计算升温,大量创业公司和互联网巨头挤进云计算领域,而最著名的云核算开源渠道 OpenStack 就是基于 Python 开发的。
随后几年的备受关注的人工智能,机器学习首选开发语言也是 Python。
至此,Python 已经成为互联网开发的焦点。 对于Python来说,时代从未如此美好。TIOBE 指数的数据显示,Python是目前世界上最受欢迎的编程语言,过去二十年也一直处于增长趋势。
1. 你学习 Python 的目的是什么?
在你学习该教程之前,你需要明确以下几个问题:
如果你是出于兴趣,或者只是想拓展下技能,学个乐呵,比如做个 2048 小游戏,处理数据,做个爬虫爬一下公司附近租房子哪里便宜,玩玩 MicroPython 与树莓派硬件编程,那你可以快乐入局~
如果你是想入行当程序员,以后靠编程这门手艺吃饭,那建议你先看看自己的年龄,再看看自己的学历,再多想想吧。
还有很多培训机构会告诉你学 Python 可以做兼职,增加自己的额外收入,前提是你要报名我们的 VIP 精品课程班。。。你开心就好。毕竟科班出身到程序员从 18 岁到 25 岁硕士都毕业了,而你 25 岁才开始学习零基础入门 Python,竞争力真的太弱了。
如果你有一定的编程语言基础,学习 Python 也是不错的选择,因为 Python 很可能就是未来开发的主流方向,多学一门语言,多一个防身技能。而且 Python 有强大的功能库,能非常快速的开发工具,为你的本职开发工作提供护航。
2. Python 的用途
- Web开发
Python 的诞生历史比Web还要早,由于 Python 是一种解释型的脚本语言,开发效率高,所以非常适合用来做Web开发。
Python 有上百种Web开发框架,有很多成熟的模板技术,选择Python开发Web应用,不但开发效率高,而且运行速度快。
常用的web开发框架有:Django、Flask、FastAPI 等。
许多知名的互联网企业将python作为主要开发语言:豆瓣、知乎、Google、NASA、Youtube、FaceBook……
由于后台服务器的通用性,除了狭义的网站之外,很多 App 和游戏的服务器端也同样用 Python实现。
提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如 Zope,Mnet 及 BitTorrent,Google 都在广泛地使用它。
- 网络爬虫
许多人对编程的热情始于好奇,终于停滞。
距离真枪实干做开发有技术差距,也无人指点提带,也不知当下水平能干嘛?就在这样的疑惑循环中,编程技能止步不前,而爬虫是最好的进阶方向之一。
网络爬虫是Python比较常用的一个场景,国际上,Google在早期大量地使用Python语言作为网络爬虫的基础,带动了整个Python语言的应用发展。以前国内很多人用采集器搜刮网上的内容,现在用Python收集网上的信息比以前容易很多了,如:
从各大网站爬取商品折扣信息,比较获取最优选择;
对社交网络上发言进行收集分类,生成情绪地图,分析语言习惯;
爬取网易云音乐某一类歌曲的所有评论,生成词云;
按条件筛选获得豆瓣的电影书籍信息并生成表格……
应用实在太多,几乎每个人学习爬虫之后都能够通过爬虫去做一些好玩有趣有用的事。
- 人工智能
人工智能是现在非常火的一个方向,AI热潮让Python语言的未来充满了无限的潜力。现在释放出来的几个非常有影响力的AI框架,大多是Python的实现,为什么呢?
因为Python有很多库很方便做人工智能,比如 numpy, scipy 做数值计算的,sklearn 做机器学习的,pybrain 做神经网络的,matplotlib 将数据可视化的。在人工智能大范畴领域内的数据挖掘、机器学习、神经网络、深度学习等方面都是主流的编程语言,得到广泛的支持和应用。
人工智能的核心算法大部分还是依赖于C/C++的,因为是计算密集型,需要非常精细的优化,还需要GPU、专用硬件之类的接口,这些都只有C/C++能做到。
而Python是这些库的API binding,使用Python是因为CPython的胶水语言特性,要开发一个其他语言到C/C++的跨语言接口,Python是最容易的,比其他语言的门槛要低不少,尤其是使用Cython的时候。
- 数据分析
数据分析处理方面,Python有很完备的生态环境。“大数据”分析中涉及到的分布式计算、数据可视化、数据库操作等,Python中都有成熟的模块可以选择完成其功能。对于Hadoop-MapReduce和Spark,都可以直接使用Python完成计算逻辑,这无论对于数据科学家还是对于数据工程师而言都是十分便利的。
- 自动化运维
Python对于服务器运维而言也有十分重要的用途。由于目前几乎所有Linux发行版中都自带了Python解释器,使用Python脚本进行批量化的文件部署和运行调整都成了Linux服务器上很不错的选择。Python中也包含许多方便的工具,从调控ssh/sftp用的paramiko,到监控服务用的supervisor,再到bazel等构建工具,甚至conan等用于C++的包管理工具,Python提供了全方位的工具集合,而在这基础上,结合Web,开发方便运维的工具会变得十分简单。
- Python的其他应用举例
桌面应用开发:有 PyQt5、Tkinter 等支持,能方便进行桌面应用程序开发。
数学处理:NumPy 扩展提供大量与许多标准数学库的接口。
文本处理:Python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用Python进行XML程序的开发。
多媒体应用:Python的 PyOpenGL 模块封装了「OpenGL应用程序编程接口」,能进行二维和三维图像处理。PyGame 模块可用于编写游戏软件。
黑客编程:Python有一个hack的库,内置了你熟悉的或不熟悉的函数,但是缺少成就感。