点击上方“蓝字”关注我们,第一时间推送优质文章!

前言

大家好,我是潜心,一位Python爱好者。学习Python一年,我一直想写一个关于Python学习的系列,包含语法、语言核心、标准库以及其他第三方库,如数据分析经常用到的matplotlib、pandas、numpy、scipy等,既是为了总结学到的知识,也是为了可以分享给更多的人。但是现在各种资料太多、太杂,要想突出自己优于别人的地方,我想结合开发文档来撰写是一个很好的突破口,因此便有了「通过Docs学Python」系列。主要的内容是结合Pyhon文档来对一些常用的标准库模块进行介绍(不一定按照顺序),当然在之前我准备先介绍下它的语法。之后可能会写一些numpy、pandas等数据科学的系列文章。本篇是它的一个前言,主要概述了Python语言的历史。【注】:有①②③等标号的,文末附上了名词解释。

本文约3.7k字,预计阅读20分钟。

概述

「Python」是一种「解释型」① 的高级编程语言,由「吉多·范罗苏姆」②(荷兰人)创造,第一版发布于「1991」年,作为「ABC语言」③ 的一种继承。之所以选中Python作为编程的名字,是因为他是BBC电视剧——「蒙提·派森的飞行马戏团(Monty Python's Flying Circus)」的爱好者。

Python是「完全面向对象」④ 的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多重继承,有益于增强源代码的复用性。

Python的设计哲学是“优雅”、“明确”、“简单”,强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词),相比于C++或Java,Python让开发者能够用更少的代码表达想法。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。这些也被誉为「Python格言」。在「Python解释器」⑤ 内运行import this,可以获得完整的列表(与君共勉):

>>> import this
The Zen of Python, by Tim PetersBeautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Python2与Python3

当前,Python主要有两个不同的版本,「Python2」与「Python3」。Python2的生命周期已经结束,最终停止在Python2.7.17版本。因此现在绝大部分所描述的Python的版本都是指Python3。目前(当前时间)Python3最高的稳定版本为Python3.8.2,Python3.9在开发中。

Python标准库

「Python语言的核心」只包含数字、字符串、列表、字典、文件等常见「内置类型」和「内置函数」。但它拥有一个强大的「Python标准库」,包含了上述所说的语言核心,以及提供了系统管理、网络通信、文本处理等额外的功能。

Python标准库具体来说包含了几种不同的组件:

  • 内置类型:描述了Python解释器中内置的标准类型,如数字、序列、映射、异常等。

  • 内置函数:不需要 import 语句就可以在所有Python代码中使用的对象。

  • 内置异常:可被用于测试异常处理程序或报告错误条件。

  • 模块:标准库主要由模块构成。可以通过不同的服务类型进行划分(包括不仅限于):

    • 文本处理服务:string、re等;

    • 数据类型:datetime、calendar、collections、types等;

    • 数字与数学模块:math、random等;

    • 文件和目录访问:os.path等;

    • 数据压缩和存档:zipfile、tarfile等;

    • 通用操作系统服务:os、io、time等;

    • 并发执行:threading、multiprocessing等;

    • ...

第三方库

Python最让开发者喜欢的原因之一是它集成了很多第三方库,甚至你自己也可以亲自来开发、上传、使用。Python社群提供了大量的第三方模块,使用方式与标准库类似。它们的功能覆盖科学计算(matplotlib、pandas、scipy、numpy)、Web开发(Django、Flask等,潜心做过一个Python Web项目,使用了Django,真的非常好用)、机器学习方法(scikit-learn)、深度学习框架(tensorflow、keras等)以及多个领域。第三方模块可以使用Python或者C语言编写。

编程环境与工具

Anaconda(环境)

Anaconda指的是一个开源的Python发行版本。潜心推荐Python环境安装Anaconda,因为它除了包含官方Python解释器,还有很多第三方的工具包,如pandas、numpy等,不需要再单独下载一些你需要的第三方包。

Jupyter Notebook(交互式)

Jupyter Notebook(前身是IPython Notebook)是一个基于Web的交互式计算环境,用于创建Jupyter Notebook文档,由Jupyter非盈利组织开发。Jupyter Notebook文档是一个JSON文档,遵循版本化模式,包含一个有序的输入/输出单元格列表,这些单元格可以包含代码、文本(使用Markdown语言)、数学、图表和富媒体,通常以“.ipynb”结尾扩展。Jupyter Bootebook对萌新来说特别友好,是一个交互式环境,并且可以编写Markdown语言记笔记。如果你安装的是Anaconda的话,自带Jupyter Notebook。

Pycharm(强大的IDE)

PyCharm是一个用于计算机编程的集成开发环境(IDE),主要用于Python语言开发,由捷克公司JetBrains开发,提供代码分析、图形化调试器,集成测试器、集成版本控制系统,并支持使用Django进行网页开发。Pycharm是一个非常强大的IDE,但是潜心不推荐萌新一上来就使用它,因为刚开始不需要如此多的功能,而且它过于庞大,比较消耗内存。(潜心一直不想使用Pycharm,直到导师让完成一个Web项目,没办法才使用Pycharm进行Django开发,确实好用)但它是一个付费软件,学生可以申请学生账户,可以免费使用。

Sublime(编辑器)

Sublime Text是一套跨平台的文本编辑器,支持基于Python的插件。Sublime Text是专有软件,可透过包(Package)扩展。大多数的包使用自由软件授权发布,并由社群建置维护。这是潜心最最最喜欢的软件,它不是一个IDE,只是一个单纯的编辑器,你需要结合Python解释器(Anaconda),以及各种插件构造一个最舒适的编程环境(一个好看的编程环境真的很能影响一位开发者的动力和编程兴趣。缺点就是你可能需要自己花点时间配置下。

总结

这是「通过Docs学Python」的前言,主要介绍了Python的历史、设计哲学、Python2与Python3以及它标准库与第三方库。接下来会用一篇文章介绍Python的基础语法,如各种控制语句。其他数据结构的介绍会放在「内置类型」中详细讲。感谢大家阅读,喜欢的可以点个关注好嘛。

名词解释

以下资料来自维基百科[1]。

①解释型语言与编译型语言

「解释型语言(Interpreted language)」是一种编程语言类型。这种类型的编程语言,会将代码一句一句直接运行。这种编程语言需要利用解释器,在运行期,动态将代码「逐句解释(interpret)」为机器代码,或是已经预先编译为机器代码的子程序,之后再运行。解释型语言除了Python还有:Perl、Ruby、JavaScript、PHP、R等。

与解释型语言相对的有「编译型语言(Compiled language)」,使用编译器,先将代码编译为机器代码,再加以运行。一般而言,用编译语言写成的程序,在运行期的运行速度,通常比用解释型语言写的程序快。因为程序在编译期,已经被预先编译成机器代码,可以直接运行,不用像解释型语言一样,还要多一道直译程序。编译型语言有:C、C++、C#等。

「Java」不同于一般的编译语言或解释型语言。它首先将源代码编译成字节码,再依赖各种不同平台上的虚拟机来解释执行字节码,从而具有“一次编写,到处运行”的跨平台特性。

②吉多·范罗苏姆

吉多·范罗苏姆(荷兰语:Guido van Rossum,1956年1月31日-),生于荷兰哈勒姆,计算机程序员,为Python程序设计语言的最初设计者及主要架构师。在Python社区,吉多·范罗苏姆被人们认为是终身仁慈独裁者(BDFL),意思是他仍然关注Python的开发进程,并在必要的时刻做出决定。2018年7月12日,他宣布不再担任Python社区的BDFL。随后Python社群为了往后编程语言发展决策规划了领导委员会(英语:Steering Council),吉多·范罗苏姆再度被选入成为五位委员会成员之一,持续贡献对于Python编程语言的发展决策。

③ABC语言

「ABC」,一种编程语言与编程环境,起源于荷兰数学和计算机科学研究学会,最初的设计者为Leo Geurts、Lambert Meertens与Steven Pemberton。程序风格受到ALGOL-68的影响,最初用来取代BASIC、Pascal与AWK,目标是在教导非专业的程序员学习如何开始写程序。编程语言Python的设计风格,有许多源自于ABC语言。

④面向对象与面向过程

「面向对象程序设计(Object-oriented programming,缩写:OOP)」是种具有对象概念的程序编程典范。它包含数据、属性、代码与方法。对象则指的是类的实例。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。它的思想是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。面向对象语言除了Python还有:C++(不属于完全面向对象语言)、Java、C#、PHP等。

「面向过程程序设计(Procedure-oriented programming,缩写:POP)」是一种以过程为中心的编程思想。具体来说就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向过程语言:C。

⑤解释器与编译器

「解释器(nterpreter)」,是一种程序,能够把编程语言一行一行解释运行。解释器像是一位“中间人”,每次运行程序时都要先转成另一种语言再作运行,因此解释器的程序运行速度比较缓慢。它不会一次把整个程序翻译出来,而是每翻译一行程序叙述就立刻运行,然后再翻译下一行,再运行,如此不停地进行下去。解释器的好处是它消除了编译整个程序的负担,程序可以拆分成多个部分来模块化,但这会让运行时的效率打了折扣。

解释器对应的是「编译器(compiler)」,是一种计算机程序,它会将某种编程语言写成的「源代码」(一般为高级语言,如C、C++、Java等)转换成另一种编程语言,「目标语言」(汇编语言或目标机器的目标代码)。它主要的目的是将便于人编写、阅读、维护的高级计算机语言所写作的源代码程序,翻译为计算机能解读、运行的低阶机器语言的程序,也就是可执行文件。

一个编译器主要的工作流程如下:

源代码(source code)→ 预处理器(preprocessor)→ 编译器(compiler)→ 汇编程序(assembler)→ 目标代码(object code)→ 链接器(linker)→ 可执行文件(executables)

参考文献

[1] 维基百科.

[2] Python官方文档.

扫码关注更多精彩

「通过Docs学Python」(一)前言相关推荐

  1. python 文件路径_「按需学Python」 1. Glob库遍历路径/文件

    小前言: 本人Python小白,因为最近想整理下近10几年的老照片,然后就有了写脚本批处理的想法.初始需求其实很简单,就是筛选自己想要的照片到指定文件夹,然后按照exif信息重命名照片为拍摄时间_拍摄 ...

  2. python的输入函数是什么意思_「小白学Python」像风一样自由的输入:input( )函数详解...

    从使用Python写出第一行代码:print("Hello Python")时,我就怀揣着一个梦想,有一天,我一定要输入自己想要的内容.今天这个梦想终于实现了,多亏了input( ...

  3. python中字符型用什么表示_「小白学Python」Python中最常用的数据类型:字符串

    Python中有6个标准数据类型,分别是:Number(数值).String(字符串).List(列表).Tuple(元组).Sets(集合).Dictionary(字典). 其中,String(字符 ...

  4. python编程狮的在线编程_‎「Python编程狮-零基础学Python」をApp Storeで

    Python编程狮是W3Cschool编程狮旗下专门为零基础Python编程爱好者打造的一款入门工具App,致力于帮助初学者入门,轻松迈入编程世界.学Python,从这里开始! [零基础也能学]初学者 ...

  5. 「小白学Python」Windows安装Python

    前言 Python下载地址 https://www.python.org/ Python下载 打开上面的链接,打开 Python 的下载页面,如下图所示: 我们把鼠标放到 Downloads 上,然后 ...

  6. python同时满足两个条件_「小白学Python」3分钟掌握Python条件语句if

    Python有三类语句: 一是顺序语句,程序一行一行顺序执行,直到程序最后. 二是条件语句,程序运行到条件语句会进行判断,如果符合条件则运行其后的语句,如果不符合,则直接跳过.if条件语句. 三是循环 ...

  7. zen of python什么意思_如何理解「The Zen of Python」?

    import this The Zen of Python, by Tim Peters Python之禅 ,by Tim Peters Beautiful is better than ugly. ...

  8. amd cpu不能在cmd环境下运行java代码_「我们一起学Java02」JDK、JRE、JVM简介,Java开发平台的搭建...

    Hello,各位头条的读者大家好!接下来一段时间小编将和大家一起学习Java,"我们一起学Java"专题将会持续更新,欢迎大家关注.这里是"我们一起学Java" ...

  9. 双向链表删除节点时间复杂度_「十分钟学算法」删除链表的倒数第N个节点

    给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1 ...

最新文章

  1. Linux服务器默认建立的LVM逻辑卷磁盘空间分配不合理,根目录不够用,如何缩减和扩展逻辑卷?...
  2. mui后端开发php,PHP解决mui中ajax的跨域问题
  3. ubuntu开机出现:system program problem detected
  4. 计算机专业大二分方向,该选择人工智能还是网络安全
  5. Android中如何做到Service被关闭后又自动启动
  6. C# 曲线上的点(一) 获取指定横坐标对应的纵坐标值
  7. 视频软件会声会影支持哪些视频格式?
  8. linux下安装Telnet服务器
  9. 梅山启动建设智慧管网 为城市管理者提供智能决策支持
  10. java流程图怎么画_JAVA流程图怎么画
  11. django基于大数据的应届生求职系统--python-计算机毕业设计
  12. 靠写作杀出一条“血”路——我的2020年终总结
  13. 工作11年后一切归零
  14. 如何在IDEA中写Java程序
  15. 看泽塔云如何布局自己的超融合之路
  16. 10. 项目沟通管理与干系人管理
  17. mybatis plus 常见问题Invalid bound statement (not found)
  18. 苏州市RFID客运车辆资产管理系统:RFID防盗资产管理-新导智能
  19. 阿哲---正式入住CSDN
  20. app框架一(组件化)

热门文章

  1. 网络编程之FTP文件传输协议
  2. 王菲语法11 动词(非谓语动词)
  3. 解决 openstack-nova-scheduler/conductor 开启失败
  4. Cocos2d-x JSB 自己主动绑定bindings
  5. 华为 eNSP 模拟器练习1
  6. 你应该知道的 setTimeout 秘密
  7. Week-4-作业1
  8. Quartus II建立新工程流程,Quartus如何建立工程?
  9. 2022年度项目管理软件排名揭晓:哪些软件在市场中脱颖而出?
  10. 数组的定义,一维数组,二维数组与变长数组