发布于2026-07-20 阅读(0)
扫一扫,手机访问
Python 其实不算新面孔了——1991 年就发布了第一个版本,但真正让它火起来的,是 2010 年以后大数据和人工智能的浪潮。在 2019 年 12 月份的世界编程语言排行榜上,Python 已经坐上了第三把交椅,仅次于 Ja va 和 C 语言。
作为一门开源免费的脚本编程语言,Python 既简单易用,又功能强大。它推崇“极简主义”,读优秀的 Python 程序就像读一段英文,非专业人士也能上手。本章主要介绍 Python 编程的基础知识,不涉及具体语法,算是一道开胃菜,帮大家先认识一下这位老朋友。
程序就是一系列指令,用来告诉计算机做什么。关键是,得用计算机能理解的语言来写这些指令。虽然借助 Siri、Google Now、Cortana 等技术,我们可以直接用汉语说“打开酷狗音乐”,但用过的人都知道,这些系统还没完全成熟——人类语言太模糊、不精确,设计一个完全理解人类语言的程序,至今还是个大难题。
为了避免这些麻烦,计算机科学家发明了编程语言——一套有固定语法和精确语义的符号。每个结构都有固定的用法(语法)和含义(语义)。说白了,编程语言就是一套规则,用来编写计算机能懂的指令。这些指令叫计算机代码,用编程语言写算法的过程叫编码。Python 就是其中一种,此外还有 C、C++、Ja va、Ruby 等。至今已有成百上千种编程语言,各有各的版本,但无论哪种,都有固定的、无二义性的语法和语义。
上面提到的这些都是高级语言,方便程序员理解。但计算机硬件只能理解一种非常低级的语言——机器语言。比如让计算机求两个数的和,CPU 可能要执行:把内存位置 2001 的数加载到 CPU,再加载 2002 的数,在 CPU 里求和,最后把结果存到 2003。这还只是笼统描述,实际更复杂。而用 Python 这样的高级语言,只需 c = a + b 就搞定了。但问题来了:怎么把高级语言翻译成机器语言?有两种方法:编译器和解释器。用编译器的是编译型语言,用解释器的是解释型语言,Python 属于后者。
我们写的源代码是人类语言,自己轻松看懂;但 CPU 只认二进制指令(机器码)。在程序运行之前,必须把源代码转成二进制指令。不过,什么时候转?不同编程语言规定不同。
简单理解,编译器就是个“翻译工具”,把源代码翻译成机器码,过程包括词法分析、语法分析、语义分析、性能优化、生成可执行文件等,涉及复杂算法。解释器类似,但边翻译边执行。Ja va 和 C# 比较特殊,属于半编译半解释型——先转成中间字节码文件,再到虚拟机里执行。Ja va 开创了这条路,为了跨平台又兼顾效率;C# 后来跟上,但一直没离开 Windows 平台。
图 1 编译型语言和解释型语言的执行流程

那么,它们各有什么特点?
开发完成后,所有源代码一次性转成可执行程序(比如 Windows 的 .exe),里面全是机器码。有了可执行程序就能随时运行,不用再编译,也就是“一次编译,无限次运行”。运行时不依赖源代码和编译器,可以脱离开发环境。
但编译型语言一般不能跨平台,表现在两个方面:
Sleep()(首字母大写,参数毫秒),Linux 是 sleep()(小写,参数秒)。再比如 long 类型,Windows 64 位下占 4 字节,Linux 64 位下占 8 字节,赋值大了容易溢出,编译器还不报错。每次执行程序都要一边转换一边执行,用到哪部分源代码就转哪部分。因为每次都得重新转换,所以执行效率天生低于编译型语言,甚至差好几个数量级。计算机底层功能或关键算法通常用 C/C++ 实现,只在应用层(网站开发、批处理、小工具等)才用解释型语言。
运行解释型语言时,始终需要源代码和解释器,无法脱离开发环境。我们常说的“下载一个程序”,编译型语言下到的是可执行文件(闭源);解释型语言下到的是全部源代码(开源,因为不给源代码没法运行)。
解释型语言几乎都能跨平台,“一次编写,到处运行”是真实存在的。为什么?功劳在解释器。跨平台指源代码跨平台,不是解释器跨平台。解释器本身就是可执行程序,不能跨平台。但官方会针对不同平台开发不同的解释器,它们遵守同样的语法、识别同样的函数、完成同样的功能。这样,同一份代码在不同平台执行结果相同。解释器好比一个中间层,屏蔽了平台差异。
Python 是典型的解释型语言,运行需要解释器。只要在不同平台安装了对应解释器,代码就能随时运行,不用担心兼容性问题——真正的“一次编写,到处运行”。Python 几乎支持所有常见平台:Linux、Windows、Mac OS、Android、FreeBSD、Solaris、PocketPC 等,代码无需修改就能正确运行,可移植性很强。
编译型语言和解释型语言的差异如下表:
| 类型 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 编译型语言 | 通过编译器,一次性将源代码转成特定平台(Windows、Linux 等)的机器码(可执行文件)。编译一次后,脱离编译器也能运行,效率高。 | 可移植性差,不够灵活。 | |
| 解释型语言 | 由解释器根据需要,将部分源代码临时转成特定平台的机器码。 | 跨平台性好,通过不同解释器将相同源代码解释成不同平台机器码。 | 一边执行一边转换,效率低。 |
编程语言有高低之分,高级语言有很多种,Python 是其中之一。从本节开始正式学习 Python,但得先搞清楚“Python 是什么”。
Python 英文原意是“蟒蛇”。1989 年,荷兰人 Guido van Rossum 发明了一种面向对象的解释型编程语言,命名为 Python。至于为什么叫 Python,据 Guido 自述,他是在圣诞节期间为了打发时间开发的,而他是 Monty Python 戏剧团的粉丝,所以选了这个名字。Python 是在 ABC 教学语言基础上发展来的,ABC 虽然强大但没普及,Guido 认为是因为不开放。所以他开发 Python 时,不仅添加了 ABC 没有的功能,还设计了丰富而强大的库,让程序员能轻松把其他语言(尤其是 C/C++)做的模块粘在一起,因此 Python 常被称为“胶水语言”。
图 1 Python 的标志(Logo)

从整体看,Python 最大的特点就是简单,体现在两方面:语法非常简洁明了,非软件专业的初学者也能上手;实现同一个功能,Python 代码往往最短。网上流传着“人生苦短,我用 Python”的说法。
Python 看似“不经意间”开发出来,但实力不差。自 1991 年第一个公开发行版问世后:2004 年起使用率线性增长;2010 年荣膺 TIOBE 年度语言桂冠;2017 年 IEEE Spectrum 排行榜中位居第一。截至 2019 年 12 月,TIOBE 显示 Python 排名第三,且势头还在上升(如表 2 所示)。
| 2019年12月 | 2018年12月 | 编程语言 | 市场份额 | 变化 |
|---|---|---|---|---|
| 1 | 1 | Ja va | 17.253% | +1.32% |
| 2 | 2 | C | 16.086% | +1.80% |
| 3 | 3 | Python | 10.308% | +1.93% |
| 4 | 4 | C++ | 6.196% | -1.37% |
| 5 | 6 | C# | 4.801% | +1.35% |
| 6 | 5 | Visual Basic .NET | 4.743% | -2.38% |
| 7 | 7 | Ja vaScript | 2.090% | -0.97% |
| 8 | 8 | PHP | 2.048% | -0.39% |
| 9 | 9 | SQL | 1.843% | -0.34% |
| 10 | 14 | Swift | 1.490% | +0.27% |
| 11 | 17 | Ruby | 1.314% | +0.21% |
| 12 | 11 | Delphi/Object Pascal | 1.280% | -0.12% |
| 13 | 10 | Objective-C | 1.204% | -0.27% |
| 14 | 12 | Assembly language | 1.067% | -0.30% |
| 15 | 15 | Go | 0.995% | -0.19% |
| 16 | 16 | R | 0.995% | -0.12% |
| 17 | 13 | MATLAB | 0.986% | -0.30% |
| 18 | 25 | D | 0.930% | +0.42% |
| 19 | 19 | Visual Basic | 0.929% | -0.05% |
| 20 | 18 | Perl | 0.899% | -0.11% |
显然,Python 已经甩开 C++,直逼 C 和 Ja va,未来有可能超越它们成为冠军。再看历年市场份额变化曲线,Python 的未来大势可期。
图 2 Python 历年来市场份额变化曲线

错过了 C/C++ 的 PC 时代,又错过了 Ja va 的互联网和智能手机时代,还想错过 Python 的人工智能和大数据时代吗?Python 正站在第四次风口上,把握好风口,就能飞起来。
Python 是一种面向对象的、解释型的、通用的、开源的脚本编程语言。它为何如此流行?主要有三点原因:简单易用,学习成本低,看起来优雅干净;标准库和第三方库众多,功能强大,既能开发小工具也能开发企业级应用。举个简单例子,实现某个功能,C 语言可能需 100 行代码,Python 只需几行——因为 Python 已内置很多常见功能,只需导入包、调用一个函数就行。简单是 Python 的杀手锏,用惯了 Python 再用 C 语言简直不能忍。
1) 语法简单
和 C/C++、Ja va、C# 等相比,Python 对代码格式要求不那么严格,让用户写代码时比较舒服,不用在细枝末节上费太多精力。比如不用在每个语句末尾写分号,定义变量时不需要指明类型,甚至可以给同一变量赋不同类型的数据。这些也是 PHP、Ja vaScript、MATLAB 等脚本语言共有的特性。Python 是一种极简主义的编程语言,读一段排版优美的 Python 代码就像读英文段落,非常贴近人类语言,所以常被称为具有伪代码特质。
为什么简单就是杀手锏?一旦简单,事情就变得纯粹。开发 Python 程序时,可以专注于解决问题本身,不用顾虑语法细枝末节。在简单的环境中做纯粹的事,简直是一种享受。
2) 开源
开源意味着所有用户都能看到源代码。Python 的开源体现在两方面:一是程序员用 Python 写的代码开源(比如开发一个 BBS 系统,用户下载到的是所有源代码);二是 Python 解释器和模块开源。官方希望所有用户参与进来,改进性能、弥补漏洞,代码被研究得越多越健壮。总有一些精英会放长线钓大鱼,总有一些极客会做炫酷的事情。
3) 免费
开源不等于免费,但大多数开源软件也是免费软件。Python 既开源又免费,用户用 Python 开发或发布程序不需支付任何费用,也不用担心版权问题,即使商业用途也免费。
4) 高级语言
这里的高级指 Python 封装较深,屏蔽了很多底层细节,比如自动管理内存(需要时分配,不需要时释放)。优点是使用方便,缺点是容易让人浅尝辄止,知其然不知其所以然。
5) 解释型语言,能跨平台
解释型语言一般都可移植性好,Python 也不例外,已在前文讲解。
6) 面向对象
面向对象是现代编程语言普遍具备的特性,否则开发中大型程序会捉襟见肘。Python 支持面向对象,但不强制使用。Ja va 强制必须以类和对象的形式组织代码。
7) 功能强大(模块众多)
Python 模块众多,基本覆盖了所有常见功能,从简单的字符串处理到复杂的 3D 图形绘制都能轻松完成。社区发展良好,除了官方核心模块,很多第三方机构(如 Google、Facebook、Microsoft)也参与开发,即使小众功能也有对应模块。
8) 可扩展性强
Python 的可扩展性体现在模块上,它拥有脚本语言中最丰富、最强大的类库,覆盖文件 I/O、GUI、网络编程、数据库访问、文本操作等绝大部分应用场景。这些类库的底层不一定都是 Python,还有很多 C/C++ 的身影。当需要关键代码运行更快时,就用 C/C++ 实现,然后在 Python 中调用。Python 能把其他语言“粘”在一起,所以被称为“胶水语言”,这也弥补了部分运行效率慢的缺点。
1) 运行速度慢
这是解释型语言的通病,Python 也不例外。速度慢不仅因为边运行边翻译,还因为它是高级语言,屏蔽了很多底层细节,要多做很多消耗资源的工作(比如管理内存)。Python 的运行速度几乎是最慢的,远远慢于 C/C++,也慢于 Ja va。不过这个问题通常不大:一方面计算机硬件越来越快,堆高性能硬件就能弥补;另一方面有些应用场景能容忍速度慢,比如网站,用户打开网页大部分时间在等网络请求,服务器花 1ms 还是 20ms 执行程序,用户感觉不到(网络连接往往需要 500ms 甚至 2000ms)。
2) 代码加密困难
编译型语言的源代码会被编译成可执行程序,而 Python 直接运行源代码,对源代码加密比较困难。但开源是软件产业的大趋势,传统程序员需要转变观念。
“编程零基础,可以学习 Python 吗?”这是很多初学者常问的问题。当然,计算机基础越好对学习任何新语言越有利。但零基础也不用担心,因为无论用哪门语言入门,总得有个开始。就个人观点,Python 作为入门语言再合适不过。在大学学过 C 语言的同学都感同身受,C 语言不是很好的入门语言,很多曾经立志学编程的人学了 C 语言后决心不再学编程。而 Python 不会出现这种窘境,现在已有高校开始用 Python 作为软件专业(甚至非软件专业)的入门语言。
教程始终贯彻的思想是:零基础也能学 Python,目标就是和初学者一起从零开始学。编程零基础的你,无需犹豫,尽管放胆来学。
另外,很多初学者会遇到另一个问题:教程学完了,代码也跑通了,但还是不知道如何开发真正的应用程序,面对问题不知如何下手。这只能说明缺乏练习,代码量太少。从零基础到专业程序员,除了学习更多基础知识,更要刻意培养编程思维,没有捷径,只能靠不断积累代码量。增加代码量不是盲目写,如果找不到方向,可以从阅读别人的代码开始。读代码时要边读边思考:为什么这么写?有什么意图?有没有更简单的方法?必要时做注释。在完全理解的前提下,还可以尝试修改代码实现自己的想法。做到这些,才算真正消化吸收了。
初学写代码、调试代码肯定会遇到很多问题,最好的办法就是在网上搜索,看看类似问题别人怎么解决的,不要局限在自己的思维里。
Python 功能强大,简单易学,受很多开发者青睐。应用领域非常广泛,几乎所有大中型互联网企业都在用 Python 完成各种任务,比如国外的 Google、Youtube、Dropbox,国内的百度、新浪、搜狐、腾讯、阿里、网易、淘宝、知乎、豆瓣、汽车之家、美团等。
概括起来,主要有以下几个领域:
Python 经常用于 Web 开发。虽然目前 PHP、JS 仍是主流,但 Python 上升势头更猛。随着 Python 的 Web 框架逐渐成熟(如 Django、flask、TurboGears、web2py 等),程序员可以更轻松地开发和管理复杂的 Web 程序。例如,通过 mod_wsgi 模块,Apache 可以运行 Python 编写的 Web 程序。Python 定义了 WSGI 标准接口来协调 HTTP 服务器与 Python 程序之间的通信。最直观的例子:全球最大的搜索引擎 Google 在其网络搜索系统中广泛使用 Python;经常访问的豆瓣网也是用 Python 实现的;全球最大的视频网站 Youtube 和 Dropbox 也都是用 Python 开发的。
图 1 用 Python 实现的豆瓣网

很多操作系统中,Python 是标准组件,大多数 Linux 发行版以及 NetBSD、OpenBSD、Mac OS X 都集成了 Python,可以在终端直接运行。有些 Linux 发行版的安装器就是用 Python 写的,比如 Ubuntu 的 Ubiquity 安装器、Red Hat Linux 和 Fedora 的 Anaconda 安装器。Python 标准库中包含了多个可用来调用操作系统功能的库。例如,通过 pywin32 软件包能访问 Windows 的 COM 服务和其他 API;使用 IronPython 能直接调用 .Net Framework。通常,Python 编写的系统管理脚本,在可读性、性能、代码重用度以及扩展性方面,都优于普通 shell 脚本。
人工智能是当前最热的领域,而 Python 在机器学习、神经网络、深度学习等方面都是主流语言。基于大数据分析和深度学习发展而来的人工智能,本质上已经离不开 Python 的支持。原因至少包括:目前世界上优秀的人工智能学习框架,如 Google 的 TensorFlow(神经网络框架)、Facebook 的 PyTorch 以及开源社区的 Keras 等,都是用 Python 实现的;微软的 CNTK 也完全支持 Python,且该公司开发的 VS Code 已把 Python 作为第一级语言支持。Python 擅长科学计算和数据分析,支持各种数学运算,能绘制更高质量的 2D 和 3D 图像。总之,AI 时代的来临,让 Python 从众多语言中脱颖而出,作为 AI 时代头牌语言的位置基本无人撼动。
Python 很早就用来编写网络爬虫,Google 等搜索引擎公司大量使用 Python 编写爬虫。从技术层面看,Python 提供了很多服务于爬虫的工具,如 urllib、Selenium、BeautifulSoup 等,还有一个爬虫框架 Scrapy。
自 1997 年起,NASA 就大量使用 Python 进行各种复杂科学运算。与其他解释型语言(如 shell、JS、PHP)相比,Python 在数据分析、可视化方面有相当完善和优秀的库,如 NumPy、SciPy、Matplotlib、pandas 等,能满足科学计算程序的需求。
很多游戏用 C++ 编写图形显示等高性能模块,而用 Python 或 Lua 编写游戏逻辑。与 Python 相比,Lua 功能更简单、体积更小;Python 则支持更多特性和数据类型。例如,国际上知名的游戏 Sid Meier’s Civilization(文明)就是用 Python 实现的。此外,Python 可以直接调用 OpenGL 实现 3D 绘制,这是高性能游戏引擎的技术基础。事实上有很多 Python 实现的游戏引擎,如 Pygame、Pyglet 以及 Cocos2d 等。
图 2 Python 开发的游戏

以上只是 Python 应用领域的“冰山一角”,还可以利用 Pygame 进行游戏编程,用 PIL 进行图像处理,用 PyRo 进行机器人控制编程等。有兴趣的读者可以自行搜索深入了解。
学习过程中,很多小伙伴抱怨编程语言太多,学不过来——可能用了 Ja va 多年,突然项目需要用 Python,就感到压力山大。再比如,Facebook 的主流语言是 Hack(PHP 的进化版),但新入职的工程师 100 个里至少 95 个之前没用过 Hack 或 PHP,但上手都很快,只需 1~2 周日常编程就毫无压力。他们是怎么做到的?
有编程基础的话,接触一门新语言时会发现,不同编程语言之间其实是相通的——它们都是人类控制计算机的指令,语法规则大同小异。所以再学一门新语言没那么难。学习时要明确区别,比如学 Python 的条件和循环语句时,可以对比 C 语言或 C++ 的语法;学字符串相加时,对比 Ja va。除了区分,还要能灵活联系运用。比如 Python 擅长数据分析,在 AI、机器学习领域广泛应用(如 TensorFlow 用 Python 写),但涉及底层矩阵运算时,就需要依赖 C++ 来提高速度。很多公司就是根据需求选不同语言开发,哪怕几十到几百毫秒的速度差距,对用户体验都是决定性的。
如果 Python 是你的第一门编程语言,也不用担心。虽然同为人机交互的桥梁,但 Python 比 C++、Ja va 更简洁,更接近英语,对初学者很友好。要做的是专注于 Python,明确重点,把握好节奏,由浅入深循序渐进。根据多年的学习工作经验,把编程语言学习分为以下三步,无论是否有编程基础,都可以对照着做:
点击查看高清大图

与 Python 2.x 相比,Python 3.x 在语句输出、编码、运算和异常等方面做了一些调整,下面一一介绍。本节适合有 Python 基础的读者阅读,初学者可先跳过,整体学完 Python 后再回来看。
在 Python 2.x 中,输出数据使用 print 语句,例如:
>>> print "3,4"
3,4
>>> print(3,4)
(3,4)
但在 Python 3.x 中,print 语句没有了,取而代之的是 print 函数,例如:
>>> print(3,4)
3 4
如果还像 Python 2.x 那样用 print 语句,编译器会报错:
>>> print "3,4"
SyntaxError: Missing parentheses in call to 'print'
Python 2.x 默认采用 ASCII 编码,而 Python 3.x 默认使用 UTF-8 编码,可以很好地支持中文或其他非英文字符。例如输出一句中文:
Python 2.x:
>>> str = "C语言中文网"
>>> str
'C\xe8\xaf\xad\xe8\xa8\x80\xe4\xb8\xad\xe6\x96\x87\xe7\xbd\x91'
Python 3.x:
>>> str = "C语言中文网"
>>> str
'C语言中文网'
不仅如此,在 Python 3.x 中,下面的代码也是合法的:
>>> 中国 = "China"
>>> print(中国)
China
与其他语言相比,Python 的除法运算包含两个运算符:/ 和 //。在 Python 2.x 中,/ 的行为和 Ja va、C 类似:整数相除结果仍是整数,浮点数除法保留小数部分,例如:
>>> 1/2
0
>>> 1.0/2
0.5
在 Python 3.x 中,使用 / 运算符,整数之间做除法结果也会是浮点数,例如:
>>> 1/2
0.5
(注:原文中此处后续内容被截断,但根据上下文,Python 3.x 的 // 运算符用于整数除法,向下取整,此处不再赘述。)
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8