本文系统地梳理了 Python 的基础知识,非常适合新手从零开始学习和查阅。文章涵盖了基本数据类型、流程控制、函数、面向对象、正则表达式、网络编程等核心内容。
1. Python 简介
Python 是一门先编译后解释的语言。
- 编译型语言:在程序执行之前,先通过编译器将程序翻译成机器语言(例如 C 语言)。运行时不需要再次翻译,执行速度快。
- 解释型语言:在程序运行时,通过解释器逐行对程序作出解释并直接运行(例如 Ruby)。
- Python 的执行过程:Python 运行时,会先将代码编译为
PyCodeObject保存在内存中。程序运行结束时,解释器会将这些内容写回到.pyc文件中,这就是 Python 的持久化保存方式。第二次运行时,如果找到.pyc文件,则直接载入。
执行 Python 程序的三种常见方式:
- 使用 Python 解释器
- 交互式运行 (REPL)
- 使用 IDE 运行(如 PyCharm, VSCode)
2. Python 基本数据类型
整数 (int) 与浮点数 (float)
- 整数运算永远是精确的。
- 浮点数运算可能会有精度问题(四舍五入)。
/表示常规除法(结果为浮点数,如2 / 2结果为1.0)。//表示整除(只保留整数部分,如3 // 2结果为1)。- 科学计数法:
1.23x10^9就是1.23e9,0.000012写成1.2e-5。
进制
Python 中默认为 10 进制。
- 2 进制:用
0b表示,例如0b10即为 2。 - 8 进制:用
0o表示,例如0o10即为 8。 - 16 进制:用
0x表示,例如0x10即为 16。
1 | bin() # 转化为 2 进制 |
布尔值 (bool)
布尔值用于表示真(True)和假(False)。
在 Python 中,非零数字、非空字符串/列表/字典通常被视为 True。
只有 bool(0) 和空数据(如 "", [], {})以及 None 会被转换为 False。
1 | bool(1) # True |
字符串 (str)
字符串可以用单引号 ''、双引号 "" 或三引号 ''' ''' 表示。三引号通常用于多行字符串或文档注释。
如果字符串内本身包含引号,可以使用另一种引号包裹,或者使用反斜杠 \ 转义。
1 | # 换行与转义 |
字符串的切片与操作:
字符串可以通过索引访问,并支持切片。1
2
3
4
5c = 'hello world'
c[0:5] # 'hello'
c[0:-1] # 'hello worl' (不包含最后一个字符)
c[6:] # 'world'
c * 3 # 'hello worldhello worldhello world'
列表 (list) 和 元组 (tuple)
- 列表 (
list):使用[]表示,是有序且可变的集合。 - 元组 (
tuple):使用()表示,是有序但不可变的集合。
1 | my_list = [1, 2, 'hello'] |
集合 (set) 和 字典 (dict)
- 集合 (
set):使用{}表示,无序且不重复。空集合用set()表示。 - 字典 (
dict):使用{key: value}表示,通过key访问value。key必须是不可变类型(如int,str,tuple),且不能重复。
1 | # 集合运算 |
3. 变量与运算符
变量命名规则
- 由字母、数字、下划线
_组成。 - 首字母不能为数字。
- 变量区分大小写。
- 不要使用 Python 的保留关键字作为变量名。
常用运算符
- 算术运算符:
+(加),-(减),*(乘),/(除),//(整除),%(取模/余数),**(幂运算)。 - 比较运算符:
==,!=,>,<,>=,<=。返回布尔值。 - 赋值运算符:
=,+=,-=,*=,/=等。 - 逻辑运算符:
and(与),or(或),not(非)。 - 成员运算符:
in,not in。判断元素是否在序列中。 - 身份运算符:
is,is not。判断两个标识符是否引用同一个对象(即内存地址是否相同)。
注意
is与==的区别:is用于判断两个变量是否引用同一个对象(比较内存地址)。==用于判断两个变量的值是否相等。
1 | a = [1, 2, 3] |
4. 流程控制语句
条件语句 (if-elif-else)
Python 中使用缩进来划分代码块,没有花括号 {}。
1 | grade = 85 |
说明:Python 没有内置的 switch/case 语法。如果遇到需要占位的情况,可以使用 pass 关键字。
1 | # pass 的使用 |
循环语句 (for 和 while)
1. for 循环
常用于遍历序列(如列表、字符串、字典等)或固定次数的循环。配合 range() 函数非常方便。
1 | # 打印 0 到 4 |
2. while 循环
常用于循环次数不确定,需要根据条件来结束的场景。
1 | import random |
3. break 和 continue
break:立刻跳出整个循环。continue:结束本次循环,直接进入下一次循环。
1 | # 打印 1~10,但跳过 5 |
5. 列表推导式与三元表达式
三元表达式:简化简单的 if-else。1
2
3
4
5x = 10
y = 20
# 如果 x > y,取 x;否则取 y
max_val = x if x > y else y
print(max_val) # 20
列表推导式:用极其简洁的方式生成新的列表/集合/字典。
1 | # 原始写法:提取小于等于 5 的元素的立方 |
6. 函数与高阶编程
定义函数
使用 def 关键字定义函数。
1 | def add(x, y=10): # y 拥有默认值 10 |
可变参数 (*args 和 **kwargs)
*args:接收任意多个位置参数,打包为元组。**kwargs:接收任意多个关键字参数,打包为字典。
1 | def demo(*args, **kwargs): |
匿名函数 (lambda)
对于只有一行的简单函数,可以使用 lambda 表达式。1
2add_func = lambda x, y: x + y
print(add_func(3, 4)) # 7
Map, Reduce, Filter
这些是函数式编程的核心工具。
map(func, iterable):对序列的每个元素应用函数。filter(func, iterable):保留函数返回为 True 的元素。reduce(func, iterable):连续计算(需要从functools导入)。
1 | from functools import reduce |
7. 闭包与装饰器
闭包 (Closure)
闭包 = 函数 + 定义时的环境变量。它可以让函数记住其被创建时的环境。
1 | def factory(pos): |
使用闭包可以避免使用全局变量,使数据更加安全且封装性更好。
装饰器 (Decorator)
装饰器是利用闭包原理,在不修改原有函数代码的情况下,为函数动态增加功能的设计模式。
1 | import time |
8. 面向对象编程 (OOP)
类是模板,对象是根据模板创建出来的实体。
1 | class Student: |
9. 正则表达式 (re 模块)
正则表达式用于文本的高级搜索、匹配和替换。
1 | import re |
10. 文件操作与异常处理
文件读写
套路:打开文件 -> 读/写 -> 关闭文件。建议使用 with 语句,可以自动管理文件的关闭。
1 | # 写入文件 |
异常处理
通过 try...except...finally 可以捕获代码中的错误,防止程序崩溃。
1 | try: |
如果需要,也可以主动抛出异常:raise Exception("自定义错误信息")。
11. 附录:网络编程基础 (TCP/UDP)
Python 的 socket 模块可以非常方便地建立网络连接。
TCP 客户端请求网页示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25import socket
# 创建 TCP Socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 建立连接
s.connect(('www.baidu.com', 80))
# 发送 HTTP 请求
s.send(b'GET / HTTP/1.1\r\nHost: www.baidu.com\r\nConnection: close\r\n\r\n')
# 接收数据
buffer = []
while True:
d = s.recv(1024)
if d:
buffer.append(d)
else:
break
data = b''.join(buffer)
s.close()
# 打印响应头
header, html = data.split(b'\r\n\r\n', 1)
print(header.decode('utf-8'))
结语:Python 的基础语法优雅且强大。熟练掌握上述内容,足以应付日常 80% 的脚本编写和后端逻辑开发任务。继续深入学习,你将能更好地利用 Python 庞大的生态圈!