请使用最新版本浏览器访问此演示文稿以获得更好体验。
Python(英国发音:/ˈpaɪθən/,美国发音:/ˈpaɪθɑːn/),是一种广泛使用的解释型、高级和通用的编程语言。
Python 是一种解释型、交互式、面向对象的编程语言。它包含了模块、异常、动态类型、高层级动态数据类型以及类等特性。在面向对象编程以外它还支持多种编程范式,例如过程式和函数式编程等。Python 结合了超强的功能和极清晰的语法。它带有许多系统调用和库以及多种窗口系统的接口,并且能用 C 或 C++ 来进行扩展。它还可用作需要可编程接口的应用程序的扩展语言。最后,Python 非常易于移植:它可以在包括 Linux 和 macOS 在内的许多 Unix 变种以及 Windows 上运行。
另外,Python 还具有应用领域广泛、特性丰富、生态完整等优点。
缺点:
运行速度慢!
Python 的设计哲学是优雅、明确、简单。它的重要准则被称为“Python 之禅”,其中包括以下格言:
>>> import this
The Zen of Python, by Tim Peters
Beautiful 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!
要安装 Python,一般需要先到 Python 官方网站下载最新的安装包。通常情况下,将鼠标悬浮在网站首页的“Download”菜单,会自动打开一个下拉菜单,其右侧会显示一个适合你的计算机的最新 Python 稳定版本。见右图。
该网站针对不同的操作系统类型、CPU 架构,提供了多个不同的 Python 安装包供下载。如果你使用 Windows 操作系统,有很大可能你的 CPU 架构是 AMD64 的,那么下载名称类似 python-3.x.x-amd64.exe
的安装包就可以了。
完成下载后,双击运行刚下载下来的安装包,会弹出如右图所示的安装画面。建议你选中“Add Python 3.12 to PATH”项前面的复选框,这将把 Python 的安装目录以及其下的 Scripts
目录的路径添加到 Windows 的 Path
环境变量列表中,使你可以从任何位置(如“命令提示符”或“Windows PowerShell”通过键入 python
运行 Python 解释器);下一步,直接点击“Install Now”进行默认安装就可以了。
如果你希望改变其他安装选项,如自己指定安装位置,那么也可以选择“Customize installation”进行自定义安装,以下是建议的自定义安装选项(完全保持默认也挺好)。
安装成功后,会在 Windows 开始菜单中添加类似右图的 Python 项。其中:
为了验证安装是否成功,我们可以打开终端(即命令提示符窗口,可以通过按 Windows-R 组合按键,在弹出的运行对话框中输入 cmd
来快速启动此窗口),在其中输入如下命令:
% python --version
Python 3.12.1
注意以上的 %
是一个提示符,表示其后面跟需要手工输入的命令,并不需要输入该符号。如果打印出 Python 3.12.1
或类似内容,表明已正确安装 Python。这时就可以键入 python
命令来启动 Python 解释器了,如下所示:
% python
提示:许多操作系统可以使用更短的命令别名 py
代替 python
。另外,当键入 python
没有响应时,请转而使用 python3
试试。
除了以上手工安装 Python 外,在 Windows 10 或 Windows 11 系统中,你也可以从应用商店中搜索 Python 并进行安装,这样将来可在应用商店中更新 Python。
对于苹果的 macOS 操作系统,一般系统已经自带 Python,不过其版本较低。你也可以像上面一样自己从官网下载并手工安装 Python。对于高级用户,更建议你使用 Homebrew 来安装 Python,其更新起来也更方便。不过 Homebrew 在国内访问一般会遇到困难,你可能需要使用国内镜像(如中科大镜像或清华镜像)。
对于 Linux 操作系统的各种发行版,一般已经为你安装好了 Python,或通过该系统的软件管理工具安装,不需要自己手动下载安装。
如果你使用 Python 主要是为了进行科学计算,那么也非常建议使用另外一个 Python 发行版:Anaconda,相对于前面介绍的 Python 官方发行版,该版本主要使用 conda 而不是 pip 作为 Python 的包管理工具。conda 不光能安装 Python 包,还能安装其他语言工具及其包;其对应的软件仓库 conda-forge
的内容要更加丰富;它还是一个管理包、依赖和环境的集成式解决方案。
可以通过两种途径使用 Anaconda:
由于有一套强大的命令行工具,许多程序员更喜欢使用 macOS、Linux 这些类 Unix 操作系统进行开发。如果你正在使用 Windows,又想尝试各种 *NIX 命令,可以通过以下几种途径实现:
pacboy -S git python:p
命令安装 Git 和 Python。除此之外,也可以通过 Cygwin 或某种虚拟机来使用 *NIX 命令。随着你掌握的命令越来越多,开发效率也会逐渐提高。
虽然 Python 的安装包提供了一个集成开发环境 IDLE,但它比较简陋,我们一般不用。我们需要寻求一种功能更加强大的开发工具,以进行源代码的编辑和项目的管理,这里推荐两种开发工具,你可以任选其一:
由于更加轻量、操作教简单,本课程教学过程中主要使用 VS Code,不过你使用 PyCharm 也是完全可行的。
如果你选择使用 VS Code,在完成安装后,需要还需要为其安装 Python 扩展,具体步骤见下图。
安装 Python 扩展时也同时会安装其他扩展,请不要删除。另外,同时建议在 VS Code 的扩展商店中搜索以下扩展并安装:
当用 VS Code 打开 Python 项目目录时,可以看到类似如下界面。请务必确保右下角选中了想要的 Python 解释器。
许多高级的功能需要通过 Python 命令来访问。通过菜单“查看”>>“命令面板...”可以打开命令面板,也可通过组合快捷键 Ctrl+Shift+P 打开,然后在其中输入 python
,就可以看到并选择执行各种 Python 命令。
如果你选择使用 PyCharm,在完成安装并首次打开时,会提示你要安装某些更新,请按提示点击安装即可。
当使用 PyCharm 创建 Python 项目时,一般需要指定指定一个虚拟环境,如 Virtualenv、Pipenv、Poetry、Conda,虚拟环境可以具体指定我们的项目依赖特定的 Python 解释器、包和模块版本。目前选用默认的 Virtualenv 即可。
计算机程序(Computer program)是指令(Instruction)的集合,这些指令可以被计算机(精确地)执行,从而完成特定的任务。
计算机程序员首先使用某种编程语言编写人类易读的源代码,然后借助编译器将其整体编译为可由计算机直接执行的机器码,或借助解释器逐行执行计算机程序。
源代码(Source code),是指一系列人类可读的计算机语言指令,其最常用的格式是文本文件。
计算机程序、库和相关数据的集合称为软件 (Software)。
语句(Statement)是指令式编程语言中最小的独立元素,表达程序要执行的一些动作。用这种语言编写的程序是由一个或多个语句序列组成的。不能再包含其他语句的语句被称为简单语句,可以包含其他语句的语句被称为复合语句。
表达式(Expression)是编程语言中的语法实体,可以对其求值以确定其值。表达式是一个或多个常量、变量、函数和运算符的组合。解释并计算表达式以产生另一个值的过程,叫作求值。
语句和表达式都是编程语言的语法实体,他们的主要区别是语句没有值,表达式有值。
程序设计(Programming)是设计和构建一个可执行的计算机程序以达成特定的计算结果和执行特定任务的过程。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程一般包括分析、设计、编码、测试、调试等不同阶段。
编程语言(Programming language)是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种能够让程序员准确地定义计算机所需要使用数据的计算机语言,并精确地定义在不同情况下所应当采取的行动。
脚本语言(Scripting language)是为了缩短传统的“编写、编译、链接、运行”(edit-compile-link-run)过程而创建的计算机编程语言。早期的脚本语言经常被称为批处理语言或工作控制语言。一个脚本通常是解释运行而非编译。
脚本语言通常都有简单、易学、易用的特性,目的就是希望能让程序员快速完成程序的编写工作。
脚本通常以文本保存,只在被调用时进行解释或编译。
Python 有两种运行模式,分别是:
在终端(或称命令行、命令提示符)输入 python
或 py
,进入解释器时,首先显示欢迎信息、版本信息、版权声明,然后才是提示符,这时解释器在交互模式中运行。
在交互模式中,会显示主提示符 >>>
,提示输入下一条指令或表达式,输入代码的结果一般会在按回车键后在下一行显示;输入连续行时,显示次要提示符,默认是三个点 ...
。
由于交互模式会自动打印输入表达式的结果,从而可以把 Python 解释器当计算器一样使用。如下示例:
>>> 2 + 2
4
>>> (50 - 5*6) / 4
5.0
>>> 8 / 5 # 除法运算永远返回一个浮点值
1.6
>>> 5 ** 2 # 两个星号 ** 组成的运算符用于计算乘方
25
>>> width = 33.3 # 等号运算符用于赋值
>>> height = 2
>>> width * height
66.6
>>> exit() # 通过调用该函数退出交互模式
键入 exit()
再按回车键,或按 Ctrl-Z 再按回车键(Windows 下),或按 Ctrl-D 键(Linux 或 macOS 下),可退出交互模式。
更多练习:
>>> print('Hello, world!')
Hello, world!
>>> x = 33
>>> print(x)
33
>>> x
33
>>> v = "foo = 33"
>>> v
'foo = 33'
>>> for x in "Xi'an":
... print(x)
...
X
i
'
a
n
课堂练习:
已知 a = 24.5, b = 33.7, c = 3.1,求
2a−b+b2−4ac
结果:
>>> a = 24.5
>>> b = 33.7
>>> c = 3.1
>>> (-b + (b**2 - 4*a*c)**0.5) / (2*a)
-0.09913258451513092
交互模式的一些注意事项:
cd
、ls
、dir
这类操作系统命令;print
打印语句;>>>
变为 ...
,请留意这种变化;交互模式一般用于实验练习和测试程序组件的场景。
交互模式不能保存代码,因此对于大多数编程情景都不适用,这时就需要使用源文件模式。源文件模式将源代码(脚本)保存在后缀为 .py
的源文件(脚本文件)中,然后命令行中通过 python
命令调用该源文件。
任务:编写 Hello, World 程序。
注:Hello, World 程序是指在电脑屏幕显示“Hello, world!”(你好,世界!)字符串的计算机程序。相关的程序通常都是每种电脑编程语言最基本、最简单的程序,也会用作示范一个编程语言如何运作。同时它亦可以用来确认一个编程语言的编译器、程序开发环境及运行环境是否已经安装妥当。因为写法简单可见,这也是很多初学者首次接触编程语言时会撰写的程序。
我们的第一个任务是在特定目录创建一个名称为 hello.py
的源文件,大家可以讨论一下有多少种方法创建此文件。一般我们可以打开 VS Code,在其中新建一个文件,输入如下内容,然后将其保存到特定目录,取名为 hello.py
。
print('Hello, world!')
假如我们保存的文件路径是 C:\pycode\hello\hello.py
,需要通过如下命令运行该文件:
% cd C:\pycode\hello # 改变工作目录为 hello.py 文件所在目录
% python filename.py # 执行 filename.py 脚本
Hello, world!
以上步骤对你来说可能显得麻烦,如果你已经按前面步骤成功配置了 VS Code 或 PyCharm 开发环境,那么可以不用离开该开发环境执行 Python 脚本。
如在 VS Code 中,可以通过点击编辑器右上角的三角形的按钮运行当前打开的文件。
在 PyCharm 中,第一次运行需要通过 Run
菜单中的 Run...
子菜单,在弹出的窗口中选择某个源文件作为项目执行的入口文件。后续直接点击该菜单中中第一项 Run '<filename>'
或按 Ctrl-R 即可快速地执行项目。
Python 脚本可以像其他脚本(如 Linux 的 Shell 脚本)一样被直接执行。
在 Windows 中,只要用 Python 程序打开对应的脚本文件,就自动执行该脚本文件了,如右图所示。不过因为我们的程序只是简单地在命令行打印一串字符就退出了,你看到的将只是一闪而过的命令行窗口。要保持窗口不退出,可以在代码的末尾加一行 input()
,表示等待用户的输入,这时需要用户按回车键以后窗口才退出。
在类 Unix 中,我们可以把 Python 源文件声明为可执行的脚本:
#!/opt/homebrew/bin/python3
print('Hello, world!')
其中第一行开头的 #!
组合字符被叫作 Shebang,其后跟 Python 解释器的路径。想要避免硬编码 Python 解释器的路径,可以写为:
#!/usr/bin/env python3
print('Hello, world!')
然后,为当前用户添加执行该脚本的权限:
$ chmod u+x hello.py
这时可以在命令行直接运行此脚本了:
$ ./hello.py
上一节创建的 Python 源文件和项目依赖的执行环境(Python 解释器和依赖包)是全局的,而一个大型的软件项目所依赖的 Python 解释器和依赖包的版本一般不应该随着全局环境更改,即项目的依赖应和环境隔离,这时在创建项目时,应该创建项目的虚拟环境。可通过以下步骤创建虚拟环境:
❶ 创建一个文件夹,用 VS Code 开打此文件夹。此操作可通过多种途径实现:
❷ 在 VS Code 中,通过 Ctrl+Shift+P 打开命令面包,在其中键入 python
显示各个 Python 命令,然后选择其中的“创建环境”;有两种环境可供选择,分别是 Venv 和 Conda,这里根据具体项目特征选择,本教程中一般选择 Venv;接下来会进一步让选择 Python 解释器路径,根据需要选择即可。
本教程的 Python 项目都很简单,通常不需要创建虚拟环境。
注释是源代码中对代码进行解释的部分,或表示临时不需要运行的代码片段,注释会被解释器忽略。Python 中的注释以 #
开头,如下所示:
# 这是一行注释
# 这是另一行注释
print('Hello, world!') # 这是代码末尾的注释,# 号前面一般放两个空格
# print('Hello, world!') # 此行代码将不会被执行
小技巧:在许多代码编辑器中,可以按 Ctrl - /(macOS 为 Command - / )键将当前行或选中行变为注释,当这些行已经是注释时,则会取消注释。
Python 不支持多行注释(或称块注释),需要多行注释,请在每行开头插入一个 #
。另外,还有一种变通的使用多行注释的方法:由于 Python 将忽略未分配给变量的字符串文字,因此可以在代码中添加多行字符串(三引单引号或双引号对),将多行字符串的内容当作注释:
"""
这相当于
一个
多行注释
"""
print('Hello, world!')
处在行首的空白字符(空格和水平制表符)称为缩进,Python 使用缩进来划分代码块(其他语言多是使用大括号 { }
或关键字来划分)。当语句以冒号 :
结尾时,其后一行或多行缩进的语句视为代码块。如下所示:
# 打印一个整数的绝对值
v = -33
if v >= 0:
print(v)
else:
print(-v)
按照惯例,应该使用 4 个空格的缩进形式。
简单来说,每个以扩展名 .py
结尾的源文件都是一个模块。模块中一般包含可重用的变量、类型和函数。其他代码可以通过导入一个模块而读取使用这个模块中定义的内容。Python 本身有一个庞大的默认安装的模块库(称为标准库),要使用一个模块,必须先导入它。
import math
print(math.pi)
我们也可以在交互模式下通过导入模块而运行某个源文件:
>>> import hello # 不可输文件的 .py 后缀
Hello, world!
不过每次运行交互模式,只能导入某个源文件一次。
内置的 print
函数用于将内容格式化显示在标准输出上(一般指的是屏幕显示器)。该函数可以接受多个参数,各个参数间以英文逗号 ,
分割;生成的输出中,各个参数间自动加一个空格。
内置的 input
函数用于获取来自标准输入设备(一般指键盘)的输入,并保存成一个字符串。该函数里可以提供一个字符串,用来给用户进行输入提示。
name = input('请输入你的名字:')
city = input('你来自哪个城市?')
# 请对比以下两行输出结果的差异:
print('欢迎您!来自', city, '的', name, '。')
print('欢迎您!来自' + city + '的' + name + '。')
斐波那契数列由 0 和 1 开始,之后的每个元素(斐波那契数)是由之前的两数相加而得出。请计算并打印斐波那契数列中的前 n 个数。
fib0 = 0
fib1 = 1
n = int(input('你想要生成多少个菲波拿契数? '))
if n >= 1:
print(fib1)
for i in range(n-1):
temp = fib0 + fib1
fib0 = fib1
fib1 = temp
print(fib1)
程序的运行结果如下:
% py fib.py
你想要生成多少个菲波拿契数? 5
1
1
2
3
5