Python 英文本意为“蟒蛇”,直到 1989 年荷兰人 Guido van Rossum (简称 Guido)发明了一种面向对象的解释型编程语言(后续会介绍),并将其命名为 Python,才赋予了它表示一门编程语言的含义。

图 1 Python 图标

说道 Python,它的诞生是极具戏曲性的,据 Guido 的自述记载,Python 语言是他在圣诞节期间为了打发时间开发出来的,之所以会选择 Python 作为该编程语言的名字,是因为 Guido 是一个叫 Monty Python 戏剧团体的忠实粉丝。

看似 Python 是“不经意间”开发出来的,但丝毫不比其它编程语言差。自 1991 年 Python 第一个公开发行版问世后,2004 年 Python 的使用率呈线性增长,不断受到编程者的欢迎和喜爱;2010 年,Python 荣膺 TIOBE 2010 年度语言桂冠;2017 年,IEEE Spectrum 发布的 2017 年度编程语言排行榜中,Python 位居第 1 位。

直至现在(2019 年 6 月份),根据 TIOBE 排行榜的显示,Python 也居于第 3 位,且有继续提升的态势(如表 2 所示)。

表 2 TIOBE 2019 年 6 月份编程语言排行榜(前 10 名)

Jun 2019Jun 2018ChangeProgramming LanguageRatings

1

1

Java

15.004%

2

2

C

13.300%

3

4

Python

8.530%

4

3

C++

7.384%

5

6

Visual Basic .NET

4.624%

6

5

4.483%

8

7

2.567%

9

9

SQL

2.224%

10

16

Assembly language

1.479%

Python语言的特点

相比其它编程语言,Python 具有以下特点。

1) Python简单易学

“编程零基础,可以学习 Python 吗”,这是很多初学者经常问的一个问题。当然,计算机基础越好,对学习任何一门新的编程语言越有利,但如果你在编程语言的学习上属于零基础,也完全不用担心。

就我个人的观点,Python 作为学习编程的入门语言是再合适不过的,相比其他编程语言(比如 Java),Python 最大的优势就是非常容易上手。举个简单的例子,如果完成一个功能,使用 Java 实现需要 100 行代码,那么使用 Python 可能只需要 20 行。

有人可能会问,将 C 语言作为入门语言不好吗?就目前的就业形势来说,仅掌握 C 语言是很难找到高薪的工作的,而掌握 Python 则不同。

并且,在使用其它编程语言编程时(例如 C、C++),你需要时刻注意数据类型、内存溢出、边界检查等问题。而 Python 则不用,因为在底层实现时,它已经帮你一一处理好了。

2) Python功能强大

Python 强大的功能是很多用户支持 Python 的最重要的原因,从字符串处理到复杂的 3D 图形编程,Python 借助扩展模块都可以轻松完成。

实际上,Python 的核心模块已经提供了足够强大的功能,使用 Python 精心设计的内置对象可以完成许多功能强大的操作。

此外,Python 的社区也很发达,即使一些小众的应用场景,Python 往往也有对应的开源模块来提供解决方案。

3) Python是解释型语言

编程语言按照程序的执行方式,可以分为编译型和解释型两种,典型的编译型语言有 C、C++ 等,而解释型语言有 Java、Python 等。

相比编译型语言,解释型语言最大的优势就是可移植性强。也就是说,Python 具有非常好的跨平台的特性。

4) Python是面向对象的编程语言

Python 既支持面向过程编程,也支持面向对象编程。在“面向过程”的语言中(如 C 语言),程序仅仅是由可重用代码的函数构建起来的;而在“面向对象”的语言(如 C++)中,程序是由数据和功能组合而成的对象构建起来的。

而且和其它面向对象的编程语言(如 C++ 和 Java)相比,Python 是以一种非常强大,而又简单的方式实现的面向对象编程。

除此之外,Python 还有开源、有良好的可扩展性等特点。基于以上这些特性,Python 广泛应用在人工智能、图像处理、Web应用开发、自动化运维、网络爬虫等领域。

Python版本的选择

Python 自发布以来,共历经了 3 个大的版本,分别是:

1994 年发布的 Python 1.0 版本(已过时);

2000 年发布的 Python 2.0 版本,截止到 2019 年 3 月份,已经更新到 2.7.16;

2008 年发布的 Python 3.0 版本,截止到 2019 年 3 月份,已经更新到 3.7.3;

3 个版本中,Python 3.0 是一次重大的升级,为了避免引入历史包袱,Python 3.0 没有考虑与 Python 2.x 的兼容,这也就导致很长时间以来,Python 2.x 的用户不愿意升级到 Python 3.0。

除此之外,造成目前这种状况的另一个原因是,将现有应用从 Python 2.x 迁移到 Python 3.x 是一项不小的挑战。虽然有 2to3(后续会介绍)之类的工具可以进行代码的自动转换,但无法保证转换后的代码 100% 正确。而且,如果不做人工修改的话,转换后的代码性能可能还不如转换前。因此,将现有的复杂代码库迁移到 Python 3.x 上可能需要付出巨大的精力和成本,某些公司无法负担这些成本。

目前,根据统计显示,使用 Python 2.x 的开发者仍占 63.7%,而Python 3.x 的用户占 36.3%,由此可见,使用 Python 2.x 的用户还是占多数。在 2014 年,Python 创始人宣布,将 Python 2.7 支持时间延长到 2020 。

那么,初学者应该选择什么版本呢?这里建议大家选择 Python 3.x 版本,理由有以下几点:

使用 Python 3.x 已经是大势所趋

目前,虽然使用 Python 2.x 的开发者居多,但使用 Python 3.x 的开发者正在迅速增加,如图 1 所示:

图 1 Python 3.x 是大势所趋

另外,根据 PEP-404 这份文档,Python 2.x 版本将不会再发布 2.8 版本,且未来非常重要的项目(如 Django、Flask 和 Numpy)可能都将放弃对 2.x 的支持,仅支持 Python 3.x。因此,从长远来看,学习 Python 3.x 只有好处。

Python 3.x在 Python 2.x 的基础上做了功能升级

Python 3.x 对 Python 2.x 的标准库进行了一定程序的重新拆分和整合,比 Python 2.x 更容易理解,特别是在字符编码方面。Python 2.x 中对于中文字符串的支持性能不够好,需要编写单独的代码对中文进行处理,否则不能正确显示中文,而 Python 3.x 已经将该问题成功解决了。

Python 3.x 和 Python 2.x 思想基本是共通的

Python 3.x 和 Python 2.x 思想基本上是共通的,只有少量的语法差别,学会的 Python 3.x,只要稍微花点时间学习 Python 2.x 的语法,即可灵活运用这两个不同版本了。

注意,选择 Python 3.x 也不是没有弊端,很多扩展库的发行总是会滞后于 Python 的发行版本,甚至目前还有很多库不支持 Python 3.x。

因此,在选择 Python 时,一定要先考虑清楚自己的学习目的,比如说,打算做哪方面的开发,此方向需要用法哪些扩展库,以及这些扩展库支持的最高 Python 版本等,明确这些问题后,再选择适合自己的版本。

关于 Python 3.x 和 Python 2.x 具体的区别,可阅读《Python 3 和 Python 2 区别》一节。

初学者应该如何学习Python?

对于初学者来说,要做的就是专注于 Python 这一门语言,明确学习的重点,把握好学习节奏,由浅入深循序渐进地学习。根据本人多年的学习工作经验,把编程语言的学习分为以下 3 步,无论你是否有编程基础,都可以对照着来做。

1) 多实践,积累代码量

任何一门编程语言,其囊括的知识面都是非常广泛的,从基本的变量赋值、条件循环、到文件操作、并发编程等。但是,千万不要等到把所有知识点都学完了才开始练习,因为到那时你会发现,前面好不容易记住的知识都忘记了。

学习编程,是十分讲究实战的,没有捷径可走,越早练习,练得越多越勤,学习效果就越好。

2) 时刻注意代码规范

学习编程语言,在追求快和高效的同时,每一种编程语言都有必要的编码规范,一定不能忽略。

要想成为一名优秀的程序员,从起步阶段就要刻意地去培养自己的编程规范。例如,在刚开始编写代码时,不要将原本多行的代码全部写到一行,也不要随便用 a、b、c 等字母作为变量的名称。

3) 开发经验是必不可少的

要想真正熟练地掌握 Python(或者其它编程语言),拥有大中型产品的开发经验是必不可少的,它会让你站得更高,望得更远。

例如,我们几乎每天都会用搜索引擎,但你了解一个搜索引擎的服务器端实现吗?这是一个典型的面向对象设计,需要定义一系列相关的类和函数,还要从产品需求、代码复杂度、效率以及可读性等多个方面综合考量,同时在上线后还要进行各种优化等。

为了辅助大家更好地学习 Python,这里准备了一章 Python 学习的知识图谱,涵盖了 Python 的核心知识。

python详细基础教程-Python基础教程,Python入门教程(非常详细)相关推荐

  1. 《零基础看得懂的C++入门教程 》——(10)面向对象

    一.学习目标 了解C++类是什么 了解类对象与类型修饰一样进行创建 了解了类的属性如何使用 了解了类方法的使用方法 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的,查看这篇即可: ...

  2. 《零基础看得懂的C++入门教程 》——(9)结构体原来如此

    一.学习目标 了解C++语言的结构体的使用方法 了解C++语言结构体的结构的赋值 了解多种C++语言结构体变量的赋值方法和取值方法 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的 ...

  3. 《零基础看得懂的C++入门教程 》——(8)搞定二维数组与循环嵌套

    一.学习目标 了解二维数组的使用方法 了解循环嵌套的使用方法 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的,查看这篇即可:<软件介绍> 想了解编译原理和学习方法点这 ...

  4. 《零基础看得懂的C++入门教程 》——(7)小数组玩起来

    一.学习目标 了解数组的使用方法 了解一维数组的使用方法 了解一维数组与循环的使用方法 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的,查看这篇即可:<软件介绍> 想 ...

  5. 《零基础看得懂的C++入门教程 》——(6)自己动手写个函数

    一.学习目标 了解C语言的自定义函数的使用方法 了解C语言自定义函数的传参 了解C语言自定义函数的返回值 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的,查看这篇即可:<软 ...

  6. 《零基础看得懂的C++入门教程 》——(5) 容我套个娃 循环

    一.学习目标 了解循环的使用方法 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的,查看这篇即可:<软件介绍> 想了解编译原理和学习方法点这篇,学习方法和一些原理C++ ...

  7. 《零基础看得懂的C++入门教程 》——(4)条件判断原来如此

    一.学习目标 了解什么是条件判断 了解多个条件判断 了解输入 了解什么是逻辑与.逻辑或 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的,查看这篇即可:<软件介绍> 想 ...

  8. 《零基础看得懂的C++入门教程 》——(3)表达式花样挺多鸭

    一.学习目标 了解变量之间的计算 了解什么是表达式 了解什么是自增.自减 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的,查看这篇即可:<软件介绍> 想了解编译原理和 ...

  9. 《零基础看得懂的C++入门教程 》——(2)什么是数据类型、变量?一看便会

    一.学习目标 了解基本常用的数据类型 了解什么是变量 目录 预备第一篇,使用软件介绍在这一篇,C++与C使用的软件是一样的,查看这篇即可:<软件介绍> 想了解编译原理和学习方法点这篇,学习 ...

  10. 《零基础看得懂的C++入门教程 》——(1)第一个C++程序就让你知其所以然

    一.学习目标 了解第一个C++程序 了解第一个C++程序结构 了解什么是注释 了解什么是命名空间 了解C语言的输出(如何在程序运行时显示内容) 了解语句结束后需要使用什么符号表示结束 了解程序入口 目 ...

最新文章

  1. android 布局 站位符,基于android布局中的常用占位符介绍
  2. 计算机网络-后退N帧协议习题思考:数据帧长度范围128~512字节,求信道利用率达到最大,帧序列的比特数至少为多少
  3. 图论--2-SAT--暴力染色法模板(字典序最小解) RQ的板子
  4. nb-iot链路层加密_Google为低端Android手机和IoT设备创建了更快的加密
  5. linux用命令行进行无线连接,linux以命令行下配置连接wlan无线网卡
  6. Sonar6.0应用之一:基于centos7.2安装
  7. 吴恩达机器学习(十三)异常检测(高斯分布)
  8. OHEM算法论文理解
  9. C# AForge视频录像
  10. 汉王考勤管理软件mysql数据库配置_汉王人脸通考勤管理软件
  11. 数据库表连接之左连接(LEFT JOIN)、右连接(RIGHT JOIN)和内连接(INNER JOIN)
  12. 超人游戏_将障碍画在背景中用pygame.mask.from_threshold实现超人和不同颜色障碍精准碰撞检测
  13. python 单词拆音节_实用小技巧,Python一秒将全部中文姓名转为拼音!
  14. win10把中文用户名改为英文用户名的两种方法
  15. 神策数据杨宁:券商财富管理数字化转型客户全生命周期(视频解读)
  16. 在GridControl表格控件中实现多层级主从表数据的展示
  17. 程序设计算法竞赛高级——练习1解题报告
  18. 链表--逆时针旋转一个链表
  19. insyde H2OFFT cannot run on battery power
  20. ev3和python哪个好_python+lego ev3的心得总结 随时更新

热门文章

  1. Java多线程闲聊(六):synchronized关键字
  2. Rust语言——无虚拟机、无垃圾收集器、无运行时、无空指针/野指针/内存越界/缓冲区溢出/段错误、无数据竞争...
  3. Java_io体系之BufferedWriter、BufferedReader简介、走进源码及示例——16
  4. c primer plus--数据和C(第3章)--习题
  5. JframeMaxSize
  6. C# Aspose.Cells 使用汇总
  7. bzoj 4557: [JLoi2016]侦察守卫 树归
  8. 《程序员》2007第2期,新产品工具点评 特别推荐“万能数据库查询分析器”发布...
  9. php学习之------[运算符相关概念]
  10. iBATIS学习笔记开篇