抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

你很有可能之前就听说过 Python,Python 目前已经是最流行的编程语言之一。无论在 IEEE Spectrum 编程语言排行榜还是 TIOBE 编程语言排行榜上,Python 都在很高的位置。

Python 是一种相当高级的语言,通常情况下,完成同一个任务,C 语言需要写 1000 行,使用 Python 只要 20~100 行。

虽然高级的 Python 程序设计有相当难度,但是 Python 依然对初学者很友好。在日常工作条件下,Python 相比其他语言更加简单易用。如果你对 Python 语言颇有兴趣,不妨花些时间看看这篇教程。

本教程假定读者已经学过 C/C++ 语言,在此基础上再学习 Python 语言。本教程通过对比这两个编程语言解释 Python 基础语法,因此略去了一些基础知识。此前没有学习过 C/C++ 的读者不建议看本篇教程。

Python 简介

Python 是一种解释型语言

对比 C/C++,Python 程序不需要编译即可运行,因此具有很强的跨平台性。另外,所有的命令都是逐行发送到 Python 解释器执行,不需要经过链接过程,因此代码顺序十分重要。

C/C++(左)与 Python(右)的程序执行对比
C/C++(左)与 Python(右)的程序执行对比

Python 是一种强类型语言

Python 代码规范化程度高,可读性强。


Python 应用领域广阔

Python 在 Web 应用后端开发、云基础设施建设、网络数据采集(爬虫)、自动化测试、数据分析、机器学习等领域都有着广泛的应用。


Python 也存在一些缺点

Python 执行效率稍低、代码无法加密以及框架太多,良莠不齐等。

如何学习 Python

基于已学编程语言,如与 C/C++ 对比

本次教程将主要从已学的 C/C++ 出发,讲解 Python 基本语法,大家也可以基于此学习流程控制、面向对象的编程方法(OOP)。


阅读 Python 教程

网络上 Python 教程良莠不齐,此处推荐

官方文档本身就是不错的教程, 见


观看视频学习,不建议,为什么?

观看视频更多是一种观察 + 模仿,而阅读文档是读书 + 思考,前者更适用于入门,但对于深入学习,往往后者效率更高。并且文档的时效性更强,有许多修正,需要培养阅读文档的能力。


多练习!!!

环境安装

首先,让我们来安装环境!

对 Windows 系统,推荐使用 Anaconda 环境,对 Linux 或 Mac OS 系统,推荐使用 Miniconda 环境。

为什么不使用纯 Python 环境呢?尽管 Anaconda 也有体积较大等缺点,但首先,纯 Python 环境包版本管理不便,例如进行机器学习时,学习他人代码往往需要不同版本的 TF 与 Pytorch,创建虚拟环境就可以很好解决这一问题;其次,纯 Python 环境需要自己安装需要数据科学必要的包

Anaconda
Anaconda

如果你使用 Linux,那大概率你已经对 Python 安装相当熟练,因此本教程直接略去,只介绍 Windows 下 Anaconda 环境的安装。

Anaconda 安装步骤

  1. 下载 Anaconda 安装包

在清华大学开源镜像站下载,参见

在开源镜像站下载安装包
在开源镜像站下载安装包
  1. 添加环境变量

在安装过程中,可以选择是否将 Anaconda 添加入环境变量。如果你想要在 Windows 自带的命令提示符中运行 Python 或不想在安装其他软件时额外配置 Python/Conda 的路径,可以选择将 Anaconda 加入环境变量。

将 Anaconda 添加到环境变量中
将 Anaconda 添加到环境变量中
什么是环境变量?

环境变量可以认为是 Windows 搜索程序的路径,执行程序时,Windows 系统会在环境变量中逐个搜索,如果找不到,则会返回找不到可执行文件。

环境变量说明
环境变量说明
  1. 修改软件源

修改 conda 源,具体参见

修改 pip 源,具体参见

环境测试

  1. 打开命令提示符
Win + S 搜索命令提示符打开,或 Win + R 输入 cmd 然后回车
  1. 输入如下命令
打开 Python 交互式命令行
1
2
conda activate base
python
  1. 打开交互式命令行

试试输入 1124 ** 122 然后回车,这是在计算 1124 的 122 次方(于是你就获得了一个强大的计算器)

测试环境代码
测试环境代码

我不想在黑框框里编程!

可安装文本编辑器(或集成开发环境, IDE)

Python 脚本文件是纯文本文件,理论上只需要记事本即可编辑,编辑后即可使用 Python 解释器运行。但是记事本没有代码补全、代码高亮、代码警告等便于编程的功能。

通过记事本编辑 Python 脚本文件
通过记事本编辑 Python 脚本文件
  1. 使用 PyCharm

JetBrain 公司出品,堪称神器,参考

使用大学生身份可以申请专业版。

  1. 使用 VS Code

Microsoft 出品,支持多种编程语言,本身是个文本编辑器,可通过扩展支持各类 IDE 功能,参考

快速入门

第一个 Python 程序

新建文件,修改文件名及后缀名为 hello.py

用文本编辑软件或上文提到的 IDE 打开这个文件,添加内容

我的第一个 Python 程序
1
print('Hello, world!')

在此处打开命令提示符,输入 python hello.py

第一个 Python 程序
第一个 Python 程序

恭喜你写出了第一个 Python 程序!

即使是这样一个简单的程序,对比 C,Python 显得非常简洁。

与 C 语言对比
1
2
3
4
5
#include <stdio.h>
int main() {
printf("Hello, world!");
return 0
}

Python 数据类型及变量

Python 是一种强类型语言同时也属于动态类型语言,Python 的变量具有明确的类型,虽然这种类型可以改变。

Python 的各种数据类型
1
2
3
4
5
6
7
8
9
10
a = 100
b = 12.345
c = 1 + 5j
d = 'hello, world'
e = True
print(type(a)) # <class 'int'>
print(type(b)) # <class 'float'>
print(type(c)) # <class 'complex'>
print(type(d)) # <class 'str'>
print(type(e)) # <class 'bool'>

Python 中 # 后面写的内容不会被解释器执行,故 # 后内容为注释,类似于 C 中的 //

如果要使用多段注释,使用 '''""" 包裹注释,类似于 C 中的 /* 一些注释 */

C 的数据类型
1
2
3
4
5
6
7
int a = 100;
double b = 12.345;

#include <complex.h>
double _Complex c = 1.0+5.0*I;

const char* d = "hello, world";

Python 运算符

Python 运算符与 C 差异不大,需要注意的是除法与 C 定义不同。Python 中 // 被称为 floor divide(除之后向下取整)

Python 中运算符
1
2
3
4
5
6
7
8
9
a = 29
b = 3
print('%d + %d = %d' % (a, b, a + b)) # 29 + 3 = 32
print('%d - %d = %d' % (a, b, a - b)) # 29 - 3 = 26
print('%d * %d = %d' % (a, b, a * b)) # 29 * 3 = 87
print('%d / %d = %f' % (a, b, a / b)) # 29 / 3 = 9.666667
print('%d // %d = %d' % (a, b, a // b)) # 29 // 3 = 9
print('%d %% %d = %d' % (a, b, a % b)) # 29 % 3 = 2
print('%d ** %d = %d' % (a, b, a ** b)) # 29 ** 3 = 24389

那么,Python 中 -1//2 与 C 中 -1/2 结果相同吗?

点击查看答案

Python 中 // 是除后向下取整,结果为 -1,C 的除法 / 采取截断,结果为 0。

Python 其他运算符
1
2
3
4
5
a = 10
b = 3
a += b # 相当于: a = a + b
a *= a + 2 # 相当于: a = a * (a + 2)
print(a) # 算一下这里会输出什么
Python 逻辑运算符
1
2
3
4
5
6
7
8
9
10
11
12
flag0 = 1 == 1
flag1 = 3 > 2
flag2 = 2 < 1
flag3 = flag1 and flag2
flag4 = flag1 or flag2
flag5 = not (1 != 2)
print('flag0 =', flag0) # flag0 = True
print('flag1 =', flag1) # flag1 = True
print('flag2 =', flag2) # flag2 = False
print('flag3 =', flag3) # flag3 = False
print('flag4 =', flag4) # flag4 = True
print('flag5 =', flag5) # flag5 = False

Python 有一个神奇的运算符,但并不推荐使用

1
2
3
x = 10
print(7 <= x <= 11) # True, which equals to (7 <= x) and (x <= 11)
print(7 <= x <= 9) # False

为什么不推荐使用呢?C/C++ 的残留编程习惯可能会造成一些错误!比如说:

1
print(False == False == False) # Is True or False?
点击查看答案

True,因为其相当于 (False == False) and (False == False)

Python 类型转换

Python 是一种强类型语言, Python 的变量具有明确的类型,虽然这种类型可以改变。

Python 变量类型转换
1
2
3
4
5
6
7
a = 100
b = 12.345
a = b # a = 12.345
a = int(b) # a = 12
a = float(a) # a = 12.0
c = "12.045"
a = float(c) # a = 12.045
C 变量类型转换
1
2
3
4
5
6
7
8
9
#include <stdio.h>

int main(){
int a = 100;
double b = 12.345;
a = b; //Not allowed!
a = (int)b;
a = (double)a; //Not allowed!
}

Python 输入输出

输入输出比 C 更加便捷。

Python 输入输出
1
2
3
4
5
6
7
8
9
10
11
print('The quick brown fox', 'jumps over', 'the lazy dog')
print('100 + 200 =', 100 + 200)
a = 10
b = 20
print(str(a) + ' + ' + str(b) + ' = ' + str(a + b))
print(a, '+', b, '=', a + b)
print('%d + %d = %d' % (a, b, a + b))

name = input("请输入名字:")
age = int(input("请输入年龄:"))
print(name,"的年龄为", age)

Python 字符串及常用数据结构

Python 中,字符串格式化与 C 类似

Python 字符串格式化
1
2
3
4
print('Hi, %s, you have $%d.' % ('Michael', 1000000))
A = "hello"
if A == "":
print("A is a empty string")

Python 流程控制

Python 使用缩进来表示代码块,一般我们使用 4 个空格作为缩进,请不要使用 Tab!严禁混用。流程控制语句如以下例子,if, for, while 后有冒号: 请不要遗漏!

请不要在 Python 代码中使用 Tab!更不能将 Tab 与空格混用!

Tab 与空格混用 Python 解释器会直接抛出语法错误!

不使用 Tab 的主要理由是在不同的终端设备上, Tab 的显示出现行为并不相同,部分终端设备可能 Tab 等同于 8 个空格,部分终端设备只能每行显示 80 个字符,为了保证显示效果,最好使用空格替代 Tab

如果你使用 VS Code,那么在右下角可以更改 Tab 对应的空格数量,并在设置中 Editor: Insert Spaces 勾选“按 Tab 时插入空格”选项,这样就可以使用 Tab 快速插入缩进空格。

1
2
3
4
5
age = 28
if age >= 18
print('your age is', age)
print('adult')
# Other code...
1
2
3
4
5
6
7
age = 3
if age >= 18:
print('your age is', age)
print('adult')
else:
print('your age is', age)
print('teenager')
1
2
3
4
5
6
7
age = 3
if age >= 18:
print('adult')
elif age >= 6:
print('teenager')
else:
print('kid')
for 循环(对象必须可以遍历)
1
2
3
4
5
6
7
8
9
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print(sum)

sum = 0
for x in range(11):
sum += x
print(sum)
while 循环
1
2
3
4
5
6
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum)

Python 函数

Python 使用 def 关键字来定义函数

定义函数
1
2
def add(a, b):
return a + b
函数可返回多个返回值
1
2
def acc(a, b, c):
return a, a + b, a + b + c

读者可做一个小练习:编写一个函数 fib(n),返回第 n 个斐波那契数

Python 其他常用语法

交换两个对象的值

1
a, b = b, a

列表推导式

1
print([x ** 2 for x in range(11)])

还有很多语法糖……

结语

本教程简要介绍了 Python 的安装及快速入门,实际上,知道这些内容已经可以编写具有一定实用性的程序了。

当然,Python 的内容非常庞杂,还有很多对编程有益的特性本篇教程并未覆盖,例如:Python 面向对象编程、字典、集合、dunder(魔术方法)、Python 包管理工具等等,这些内容将在后续教程中介绍。

欢迎大家阅读本站的 Python 教程Ⅱ,点击下面的连接即可访问。

评论