初识Python

为什么人们使用Python

根据TIOBE(编程语言流行度指数,全称是 "The Importance of Being Earnest"。)发布的数据,Python以18.04%的活跃度,排名第一,是最受大家欢迎的编程语言。

由于如今有许多编程语言可供选择,而为什么大家都选择学习和使用Python呢?通常Python用户选择使用Python有如下因素:

软件质量:

Python 以其简洁易读的语法设计、统一的编程模型以及对软件质量的重视,在脚本语言中脱颖而出。它通过一致且有限的核心概念,使得代码更易于理解、维护和重用,同时支持高级的软件重用机制,如面向对象和函数式编程。Python 的设计哲学强调显式优于隐式、简单优于复杂,这使得程序员在编写代码时不需要频繁查阅手册,并自然促进了高质量代码的编写。

开发效率:

Python 大幅提高了开发人员的生产力,远超编译型或静态类型语言如 C、C++ 和 Java。由于 Python 代码通常仅为同等 C++ 或 Java 代码的三分之一到五分之一,减少了输入、调试和维护的工作量。此外,Python 程序可以立即运行,无需冗长的编译和链接步骤,这进一步加快了开发速度。Python以其简单的语法、动态类型和内置工具集,使得开发人员能够在更短时间内完成更多工作,将生产力提升到传统语言难以达到的水平。

程序可移植性:

大多数Python程序在所有主要计算机平台上都能无须修改地运行。例如,在Linux和Windows之间移植Python代码通常只需要将脚本的代码复制到不同的机器上。此外,Python提供了多种选项来编写可移植的图形用户界面、数据库访问程序、基于Web的系统等。甚至操作系统接口,包括程序启动和目录处理,在Python中也尽可能地具有可移植性。

丰富的生态:

Python 拥有非常丰富的生态系统,主要由强大的标准库和大量的第三方库组成。其中标准库为安装Python时系统自带的模块和包,这体现了Python的设计哲学“Batteries Included(内含电池,开箱即用)“。除了标准库,Python 的生态系统中还有大量的第三方库,这些库涵盖了几乎所有领域,使得 Python 在各种应用场景中都能发挥强大作用。

标准库:

标准库无需安装,可以直接在代码中导入并使用。它涵盖了文件操作、网络编程、数据序列化、正则表达式、日期和时间处理、数学计算、线程和进程管理等众多功能。例如:

os 和 sys 模块:用于文件和目录操作,处理操作系统级别的任务。

json 和 csv 模块:用于处理 JSON 数据和 CSV 文件。

re 模块:支持强大的正则表达式处理。

datetime 模块:处理日期和时间相关的操作。

math 和 statistics 模块:提供了基本的数学运算和统计功能。

第三方库:

除了标准库,Python 的生态系统中还有大量的第三方库,这些库涵盖了几乎所有领域,使得 Python 在各种应用场景中都能发挥强大作用。例如:

NumPy 和 Pandas:用于数据处理和分析,尤其是在科学计算和数据科学领域广泛应用。

Matplotlib 和 Seaborn:提供了数据可视化功能,可以绘制各种图表和数据图形。

Requests:用于处理 HTTP 请求,适合与 Web API 进行交互。

Django 和 Flask:用于构建 Web 应用的框架。

TensorFlow 和 PyTorch:用于机器学习和深度学习的框架。

BeautifulSoup 和 Scrapy:用于 Web 数据抓取和解析。

良好的可集成性:

Python 脚本可以通过多种集成机制轻松地与应用程序的其他部分进行通信。这种集成能力使得 Python 成为产品定制和扩展的理想工具。如今,Python 代码可以调用 C 和 C++ 库、从 C 和 C++ 程序中调用、与 Java 和 .NET 组件集成、通过 COM 和 Silverlight 等框架通信、通过串口与设备接口,并且可以通过 SOAP、XML-RPC 和 CORBA 等网络接口进行交互。因此,Python 并不是一个独立的工具,而是可以与其他技术和系统深度集成的语言。

例如,我们将学习的Pytorch库中,Python通过调用C++ 库来加速计算,这种良好的可集成性使Python这样速度较慢的编程语言也能广泛应用与深度学习这样的计算密集型领域。

有趣:

Python 的易用性和内置工具集使编程过程变得愉快而不再繁琐。这种无形的优势对生产力有着重要的积极影响。这也使得使用Python编程成为一件有趣的事情。

彩蛋:

要更全面地了解 Python 的哲学,可以在 Python 交互式命令行中输入命令 import this,这会展示一个隐藏在 Python 中的“彩蛋”——一组贯穿于 Python 语言及其用户社区的设计原则。其中,“EIBTI” 是流行的术语,代表“明确优于隐式”这一规则。这些原则虽然不是宗教信仰,但已经足够接近,成为 Python 的座右铭和信条。

Python的优势:

支持面向对象及函数式编程:

Python 是一种支持面向对象和函数式编程的多范式语言,它通过简单的语法和强大的类模型使得复杂的编程概念易于理解和应用,同时允许开发者根据需要选择编程模式。

免费:

Python 是一个完全免费且开源的编程语言,拥有活跃的在线社区和强大的开发者支持,其开发过程由全球社区驱动,保证了语言的稳定性和持续改进。

可移植:

Python 致力于实现跨平台的可移植性,确保其标准库模块和自动编译的字节码在任何安装了兼容 Python 版本的系统上都能无缝运行。无论在哪个平台,Python 的核心语言和库都保持一致的表现,而且许多 Python 发行版还额外提供了针对特定平台的扩展功能。此外,Python 内置的 tkinter 库进一步简化了开发流程,允许开发者轻松构建能够在所有主流操作系统上运行的图形用户界面,而无需对代码进行额外的修改。正是这种以可移植性为核心的设计理念,使得 Python 成为开发跨平台应用程序的理想选择。

例如:获取在当前目录下的子目录sub_dir路径,在Windows系统中,路径的分隔符为“\“(反斜杠),在Linux系统中,路径的分隔符为”/“(斜杠),如果使用Python内置的os模块,Python就是根据不同的操作系统,使用对应的分隔符来连接目录。

Python支持:

Linux和Unix系统

Microsoft Windows 系统

Mac OS 系统

BeOS, OS/2, VMS, 和 QNX系统

VxWorks等实时操作系统

超级计算机系统 and IBM 大型机系统

移动操作系统Android 和 Apple’s iOS系统

强大的特性:

Python 提供了一系列强大的工具和特性:

Dynamic typing,动态类型

Automatic memory management,自动内存管理

Programming-in-the-large support,支持大型编程

Built-in object types,内建类型

Built-in tools,内建工具

Library utilities,标准库

Third-party utilities,第三方库

有哪些使用Python开发的项目:

Python 拥有庞大的用户群体和活跃的开发者社区。它通常被认为是全球使用最广泛的前五或前十种编程语言之一。由于 Python 已经存在超过二十年,并得到了广泛使用,它也变得非常稳定和强大。

除了个人用户之外,Python 还被许多公司用于商业产品中。例如:

Google 广泛在其网页搜索系统中使用 Python。

YouTube 的大部分代码是用 Python 编写的。

Dropbox 的服务器和桌面客户端软件主要使用 Python。

树莓派开发板将 Python 作为其教育语言推广。

EVE Online 大规模多人在线游戏(MMOG)广泛使用 Python。

BitTorrent 对等文件共享系统最初是用 Python 编写的。

光影魔术(Industrial Light & Magic) 和 皮克斯(Pixar) 等公司在动画电影制作中使用 Python。

ESRI 使用 Python 作为其流行 GIS 映射产品的终端用户自定义工具。

Google 的 App Engine Web 开发框架使用 Python 作为应用程序语言。

IronPort 邮件服务器产品使用了超过 100 万行 Python 代码。

Maya 强大的 3D 建模和动画系统提供了 Python 脚本 API。

NSA 使用 Python 进行加密和情报分析。

iRobot 使用 Python 开发商业和军事机器人设备。

游戏《文明 IV》的可定制脚本事件完全用 Python 编写。

“每个孩子一台笔记本电脑”项目使用 Python 构建其用户界面和活动模型。

Netflix 和 Yelp 记录了 Python 在其软件基础设施中的作用。

Intel、Cisco、Hewlett-Packard、Seagate、Qualcomm 和 IBM 使用 Python 进行硬件测试。

JPMorgan Chase、UBS、Getco 和 Citadel 使用 Python 进行金融市场预测。

NASA、洛斯阿拉莫斯、费米实验室和 JPL 等机构使用 Python 进行科学编程任务。

可达鸭在线使用Python编程语言基于Django开发

可以用Python来做哪些事情:

系统编程:

Python 内置的操作系统接口,使其非常适合编写可移植、易维护的系统管理工具和实用程序(如 shell 工具)。Python 程序能够搜索文件和目录树、启动其他程序、进行并行处理等。标准库提供了 POSIX 绑定,并支持多种操作系统工具,包括环境变量、文件、套接字、管道、进程、多线程、正则表达式匹配、命令行参数、标准流接口、shell 命令启动器、文件名扩展、压缩文件工具、XML 和 JSON 解析器、CSV 文件处理等。大多数系统接口都具有可移植性,Stackless Python 实现还提供了多进程处理的高级解决方案。

图形用户界面编程(GUIs):

Python 的简单性和快速开发特性使其非常适合桌面图形用户界面(GUI)编程。Python 内置了标准的面向对象接口tkinter,可以使用原生外观实现可移植的 GUI,并且这些界面可以在Windows、X Windows(Unix和Linux)以及Mac OS上无须修改地运行。除了tkinter外,wxPython是另一种基于C++库的GUI API,可用于构建可移植的Python界面。此外,还有一些更高级的工具包,如Dabo,基于wxPython和tkinter构建,Python还可以通过适当的库使用其他工具包的GUI支持,如PyQt、PyGTK、PyWin32等。对于在Web浏览器中运行的应用程序,Python的Web框架和服务器端CGI脚本也提供了用户界面选项。

网站应用开发:

Python 自带的标准互联网模块使其能够轻松实现多种网络任务,包括客户端和服务器模式,如通过套接字通信、处理 CGI 表单信息、文件传输、解析和生成 XML 和 JSON 文档、处理电子邮件、获取和解析网页内容,以及通过 XML-RPC、SOAP 和 Telnet 进行通信。此外,Python 还有丰富的第三方工具和框架支持互联网编程,如 HTMLGen、mod_python、Jython、Django 等,提供从简单的网页生成到复杂的企业级网站开发的完整解决方案。最近,Python 还扩展到了富互联网应用(RIAs)和云计算领域,如 IronPython 中的 Silverlight、pyjs 以及 Google App Engine 等,使其在网络开发中的应用范围更加广泛。

组件集成功能:

Python 的组件集成功能使其成为一种灵活的胶水语言,可以用于控制和脚本化其他系统和组件。通过扩展 C 和 C++ 系统,Python 可以测试和启动这些库的组件,或者将 Python 嵌入到产品中,实现现场定制而无需重新编译整个产品。例如Cython 系统允许开发者混合使用 Python 和类 C 代码。更大的框架,如 Python 在 Windows 上的 COM 支持、Jython 和 IronPython 提供了脚本化组件的替代方式,例如,Python 脚本可以在 Windows 上控制 Word 和 Excel,访问 Silverlight 等。

数据库编程:

Python 提供了接口支持所有常用的关系数据库系统,如 Sybase、Oracle、MySQL、PostgreSQL 和 SQLite 等,并定义了一个可移植的数据库 API,使得 Python 脚本可以在不同的数据库系统上无须大幅修改地运行。Python 内置的 SQLite 引擎从 2.5 版起成为标准部分,适用于原型开发和基本存储需求。对于非 SQL 数据库,Python 提供了如 pickle 模块用于对象持久化,以及 ZODB、Durus 等面向对象数据库系统。此外,SQLObject 和 SQLAlchemy 实现了对象关系映射(ORM),而 PyMongo 则是一个高性能、非 SQL 的 MongoDB 接口,适用于处理类似于 Python 列表和字典结构的数据。Python 还支持在 Google App Engine 等平台上使用的云存储选项,提供了高度可扩展的数据存储解决方案。

原型验证开发:

对于Python程序来说,用Python和C编写的组件看起来是一样的。因此,可以先用Python快速原型化系统,然后将选定的组件移植到C或C++等编译语言中进行最终交付。与其他一些原型工具不同,Python在原型固化后无需完全重写,不需要高效性的部分可以继续用Python编写,以便于维护和使用。

数据科学编程:

Python 在数值编程领域得到了广泛应用,这一领域传统上不被认为是脚本语言的适用范围,但现在已成为 Python 的重要用例之一。NumPy 是一个高性能的数值编程扩展,提供了数组对象、标准数学库接口等高级工具。通过将 Python 与用编译语言编写的数值例程结合,NumPy 使 Python 成为一个既复杂又易用的数值编程工具,常常可以替代传统编译语言如 FORTRAN 或 C++ 编写的代码。此外,Python 还支持动画、3D 可视化、并行处理等功能。流行的 SciPy 和 ScientificPython 扩展提供了额外的科学编程工具库,并以 NumPy 作为核心组件。PyPy 实现的 Python 也在数值领域获得了关注,因为它能够显著加快算法密集型代码的运行速度,通常比其他实现快 10 到 100 倍。

其他领域:

游戏、图像、数据挖掘、机器人、自动化运维、Excel、网络爬虫、办公自动化等等

Python的缺点:

Python唯一显著的缺点是,它的执行速度可能不如C和C++等完全编译的低级语言那么快。Python的标准实现将源代码编译为一种称为字节码的中间格式,然后解释执行它。字节码提供了跨平台的可移植性,但因为Python通常不会编译成底层的机器码,某些程序在Python中的运行速度比在C等编译语言中要慢。

然而,Python的开发速度通常远远超过了执行速度的损失,尤其是在现代计算机的速度下。此外,对于一些需要最佳执行速度的领域,如数值编程和动画,你可以使用Python,并将需要优化速度的部分分离出来,编译为扩展模块,再将它们链接到Python脚本中使用。这种双语言策略,使得Python既高效又易于使用。

Python的不同实现:

CPython:Python的标准实现

CPython是Python的标准实现,因为它是用C语言编写的,所以得名。Python官方网站下载的Python就是CPython,也是大多数Linux和Mac OS X系统预装的Python。如果你的机器上预装了Python,很可能就是CPython。除非你有特殊需求,比如用Python编写Java或.NET应用程序,或者对Stackless或PyPy有特别的兴趣,否则通常推荐使用CPython,因为它是Python语言的参考实现,通常运行速度最快,功能最全,更新和稳定性也最好。

Jython:面向 Java 的 Python

Jython 是 Python 语言的一种替代实现,旨在与 Java 编程语言集成。Jython 由一系列 Java 类组成,这些类将 Python 源代码编译成 Java 字节码,然后将生成的字节码路由到 Java 虚拟机(JVM)。程序员仍然像平常一样在 .py 文本文件中编写 Python 语句。

Jython 的目标是允许 Python 代码来脚本化 Java 应用程序,就像 CPython 允许 Python 来脚本化 C 和 C++ 组件一样。它与 Java 的集成非常无缝。因为 Python 代码被翻译成 Java 字节码,所以在运行时看起来和感觉就像是一个真正的 Java 程序。Jython 脚本可以作为 Web 小程序和 Servlet 运行,构建基于 Java 的 GUI 等。此外,Jython 包括集成支持,允许 Python 代码导入和使用 Java 类,就像它们是用 Python 编写的一样,Java 代码也可以运行 Python 代码作为一种嵌入式语言。尽管 Jython 比 CPython 慢且不够健壮,但它通常被视为对 Java 开发者感兴趣的工具。

IronPython:面向 .NET Python

IronPython Python 的一种实现,它允许 Python 程序与微软的 .NET Framework 以及 Linux 上的 Mono 集成。它使得 Python 程序能够作为客户端和服务器组件运行,并且能够从其他 .NET 语言中获得和提供可访问性,同时还能利用 .NET 技术。IronPython 在实现上与 Jython 类似,都是通过将 Python 代码转换为 .NET 环境中的等价物来执行。它主要吸引那些希望将 Python .NET 组件集成的开发者。IronPython 曾经由微软开发,现在是一个开源项目,可能还能利用一些优化工具来提升性能。更多信息可以在 IronPython 的官方网站 http://ironpython.net 上找到。

Stackless:面向并发的 Python

Stackless Python CPython 的一个增强版,专注于并发编程。它通过不使用 C 语言调用栈来保存状态,使得 Python 更易于移植到小栈架构,提供了高效的多进程选项,并支持了协程等新颖的编程结构。Stackless Python 引入的微线程是 Python 标准多任务工具的轻量级替代品,它能够带来更好的程序结构、更易读的代码和提升程序员的生产力。CCP Games,知名的游戏 EVE Online 的开发商,是 Stackless Python 的一个知名用户,也是 Python 成功案例的代表。更多信息可以在 Stackless Python 的官方网站 http://stackless.com 上找到。

PyPy:为速度而生的 Python

PyPy CPython 的一个重新实现,专注于提升性能。它通过 JIT 编译器提供了快速的 Python 执行环境,并且支持在安全沙箱中运行不可信代码。PyPy 继承了 Psyco JIT,并将其扩展为完整的 Python 实现,专注于速度。JIT 编译器在程序运行时将字节码转换为机器代码,从而提高执行速度,并且能够为动态的 Python 语言生成特定类型的机器代码。PyPy 目前支持 Python 3.10Python 2.7,并且在多种平台上运行,尽管它有一些与 CPython 不同的语言特性和垃圾收集语义。PyPy 声称在许多基准测试中比 CPython 5.7 倍,对于算法密集或数值计算的程序尤其有效,有时甚至能与 C 代码相媲美。

安装Python

在Python官方网站(https://www.python.org/downloads/)下载Python安装文件。

关于PATH路径,如果没有勾选“add python.exe to PATH(将python添加到PATH环境变量)“,那么我们在命令行中,只能在python安装的目录使用Python命令,如果我们将Python添加到PATH环境变量,我们就可以在任意目录运行Python命令,因为运行一个命令时,系统会查找当前目录和 PATH 环境变量中列出的目录。

如果没有将Python添加到PATH路径时,只能在Python安装目录(通常Python安装目录为:“C:\Users\<用户名>\AppData\Local\Programs\Python\Python312”)可以通过命令行启动python:

在其他目录不能通过命令行启动python:

Python组件:

安装Python后,我们能看到一共安装的4个组件,

分别是:

集成开发学习环境:IDLE (Python 3.12 64-bit)

Python的IDLE(Integrated Development and Learning Environment)是Python附带的集成开发环境,IDLE为初学者提供一个易于使用的编程环境。它包含一个交互式解释器窗口,用户可以直接在其中编写并执行Python代码,同时IDLE还提供了语法高亮、代码自动补全和调试工具等功能,使得编写、调试和运行Python程序更加方便。这种环境尤其适合进行小规模的测试和实验,是学习和开发Python代码的好帮手。

Python交互式命令行:Python 3.12 (64-bit)

Python的交互式命令行,是一个即时执行Python代码的环境。用户可以直接在命令行中输入Python语句,系统会立即运行并返回结果。这个特性非常适合快速测试代码片段、调试程序、或进行简单的计算和实验。交互式命令行提供了即时反馈,有助于学习和理解Python的语法和功能。

Python手册:Python 3.12 Manuals (64-bit)

Python安装时自带的Python Manuals(Python手册)是一套详细的文档资源,包含Python语言的完整参考资料、库模块的使用指南、教程和其他相关信息。这些手册帮助用户深入了解Python的各个方面,从基础语法到高级特性,涵盖了标准库的详细说明和示例。Python Manuals 是学习和开发过程中不可或缺的工具,可以通过本地或在线的形式访问。

Python模块文档:Python 3.12 Module Docs (64-bit)

Python Module Docs是Python自带的一部分文档,专门介绍和解释标准库中的各种模块及其功能。这些文档详细描述了每个模块的用途、包含的函数和类,以及如何使用它们。通过Python Module Docs,开发者可以迅速了解和掌握各种标准库模块的使用方法,帮助他们在编写代码时更有效地利用Python的内置功能。

Python的两种模式:

交互式解释器:

在交互式解释器中,我们输入Python语句,并输入回车键(ENTER键),交互式解释器会立即将这段Python语句解释执行,并返回执行结果。

在交互式解释器中,以“>>>“作为提示符,说明当前处于交互式解释器模式中。使用quit()函数可以退出交互式解释器模式。

在这种模式中,代码不会保存,所以通常这种模式只用于测试及调试。

如何在交互式解释器输入多行语句:

Python语言通过缩进来组织代码块,我们将再稍后学习,在交互式解释器中,如果有for循环和if测试等缩进的多行代码块时,需要使用一个空行,也就是说需要按两次回车键(ENTER键),按下两次回车键(ENTER键)后,缩进的代码块将会被执行。

Python文件模式:

Python文件就是以.py为拓展名的文本文件,也被称为模块,模块就是包含Python语句的文本文件。

如何运行Python程序:

在Python IDLE中新建一个script1.py文件,文件内容如图:

1、在IDLE中运行,在IDLE中选择RunRun Module(或者按F5)运行Python程序:

2、在命令行中运行Python脚本,鼠标右键点击Windows开始图标,打开Windows PowerShell,使用cd(change directory)命令,将工作路径切换到script1.py文件所在路径,然后输入python script1.py运行Python程序。

 

在 Windows 系统中,内置了 CMD 和 PowerShell 两款命令行工具。为了提升使用体验,强烈推荐大家安装 Windows 终端。安装方法如下:在microsoft store中搜索“终端”,并安装。安装完成后,可在文件夹中右键:“在终端中打开”,如何输入python script1.py运行Python程序。

3、在命令行(推荐使用Windows终端)中输入py script1.py 运行Python程序(先将工作目录切换到script1.py所在目录,否则Python会找不到script1.py文件)

4、双击script1.py图标,这时屏幕上会闪过一个黑框,程序运行之后自动关闭了,这时我们使用一个技巧,在script1.py文件中添加一行代码:input(),(右键script1.py,点击Edit with IDLE编辑文件。这个函数会让Python程序等待用户输入,所以程序不会自动关闭。)然后再双击script1.py图标,即可看到运行结果。

5、在命令行输入py script1.py,不要忘记将工作目录切换到script1.py所在目录,否则Python会找不到script1.py文件,即可看到运行结果。

下载本节的示例代码及文件:script1.py