Python 基础核心知识点总结
这份总结涵盖了从基础语法到面向对象编程的核心内容。
第1-2章:Python 简介与基础
1. 模块与包
- 模块 (Module) : 一个
.py文件就是一个模块,用于组织功能相似的代码。 - 包 (Package) : 包含
__init__.py文件的目录,用于组织多个模块。 - 库 (Library): 具有相关功能的模块的集合,是一个抽象概念。
2. pip 第三方模块管理
pip install 模块名:安装第三方模块。- 配置国内镜像源可以显著提升下载速度,例如清华源:
https://pypi.tuna.tsinghua.edu.cn/simple。
3. 基本代码规范
- 注释 :
- 单行注释 : 使用
#,官方建议#后跟一个空格。 - 多行注释 : 使用三对双引号
"""或单引号''',通常用作文档字符串。
- 单行注释 : 使用
- 缩进 :
- Python 使用缩进来表示代码块,是语法的一部分。
- 推荐使用 4个空格 作为一级缩进,禁止混合使用 Tab 和空格。
- 语句换行 :
- 建议每行代码不超过79个字符。
- 可以使用圆括号
()、方括号[]、花括号{}进行隐式换行。
4. 标识符与关键字
- 标识符规则: 由字母、数字和下划线组成,不能以数字开头,区分大小写,不能使用关键字。
- 命名建议 :
- 变量/函数 : 全小写,单词间用下划线连接,如
student_name。 - 类名 : 使用大驼峰命名法,如
StudentInfo。 - 常量 : 全大写,单词间用下划线连接,如
MAX_VALUE。
- 变量/函数 : 全小写,单词间用下划线连接,如
- 关键字 : Python 有 35 个关键字,如
if,for,def,class,import等,不能用作标识符。
5. 变量与数据类型
- 变量 : 通过赋值运算符
=定义,如name = "Alice"。 - 数据类型 :
- 数字类型 :
- 整型 (int) : 如
10,-5。 - 浮点型 (float) : 如
3.14,-0.5。 - 布尔型 (bool) :
True和False,本质是整型的子类。 - 复数 (complex) : 如
1+2j。
- 整型 (int) : 如
- 字符串 (str) : 由引号包裹的字符序列,如
"Hello",'Python'。 - 列表 (list) : 有序、可变的元素集合,如
[1, 2, "a"]。 - 元组 (tuple) : 有序、不可变的元素集合,如
(1, 2, "a")。 - 集合 (set) : 无序、元素唯一的集合,如
{1, 2, "a"}。 - 字典 (dict) : 键值对(key-value)的集合,如
{"name": "Alice", "age": 18}。
- 数字类型 :
6. 基本输入输出
- 输入 :
input([prompt])函数,从键盘读取输入,返回值为字符串类型。 - 输出 :
print(objects, sep=' ', end='\n')函数。
7. 运算符
- 算术运算符 :
+,-,*,/,//(整除),%(取余),**(幂)。 - 赋值运算符 :
=,+=,-=,*=等。Python 3.8 新增了海象运算符:=,可在表达式内赋值。 - 比较运算符 :
==,!=,>,<,>=,<=,返回布尔值。 - 逻辑运算符 :
and,or,not。 - 成员运算符 :
in,not in,用于测试元素是否在序列中。 - 位运算符 :
&(与),|(或),^(异或),~(取反),<<(左移),>>(右移)。 - 运算符优先级 :
**最高,=赋值运算符最低,可使用()提升优先级。
第3章:流程控制
1. 条件语句 (if-elif-else)
- 根据条件表达式的布尔值决定执行哪个代码块。
python
score = 84
if score >= 90:
print("优秀")
elif 75 <= score < 90:
print("良好")
elif 60 <= score < 75:
print("合格")
else:
print("不合格")
# 输出:良好
2. 循环语句 (while / for)
while循环: 在条件为真时重复执行代码块,适用于循环次数未知的场景。
python
# 计算 1 到 10 的和
i = 1
total = 0
while i <= 10:
total += i
i += 1
print(total) # 输出:55
for循环: 用于遍历任何可迭代对象(如字符串、列表、元组等),适用于循环次数已知或需要遍历元素的场景。
python
# 遍历字符串
word = "Python"
for char in word:
print(char, end=' ') # 输出:P y t h o n
# 与 range() 函数配合使用
for i in range(5): # range(5) 生成 0, 1, 2, 3, 4
print(i, end=' ') # 输出:0 1 2 3 4
3. 跳转语句 (break / continue)
break: 立即终止当前循环。continue: 跳过本次循环的剩余代码,立即进入下一次循环。
python
for char in "Python":
if char == 'o':
break
print(char, end='') # 输出:Pyt
第4章:字符串
1. 格式化字符串
%格式化 : 旧式格式化方法,使用%s,%d等占位符。format()方法 : 更强大的格式化方法,使用{}作为占位符。- f-string: Python 3.6 引入,最简洁直观的格式化方式。
python
name = "Jerry"
age = 20
# % 格式化
print("姓名:%s,年龄:%d" % (name, age))
# format() 方法
print("姓名:{},年龄:{}".format(name, age))
# f-string 格式化 (推荐)
print(f"姓名:{name},年龄:{age}")
2. 字符串常用操作
- 查找与替换 :
find(sub): 返回子串首次出现的索引,找不到返回 -1。replace(old, new[, count]): 替换子串并返回新字符串。
- 分割与拼接 :
split(sep): 按分隔符分割字符串,返回列表。join(iterable): 用指定字符串连接可迭代对象中的元素。
- 删除指定字符 :
strip([chars]): 移除字符串头尾的指定字符,默认为空格。lstrip(),rstrip(): 分别移除头部和尾部的指定字符。
- 大小写转换 :
upper(),lower(),capitalize(),title()。
- 对齐 :
center(width),ljust(width),rjust(width)。
第5章:组合数据类型
1. 列表 (List)
- 创建 :
list_one = [],list_two = list('abc')。 - 访问 : 通过索引
list[0]或切片list[1:3]。 - 常用方法 :
- 添加 :
append(x),extend(iterable),insert(index, x)。 - 删除 :
remove(x),pop([index]),del list[index],clear()。 - 排序 :
sort(),sorted(),reverse()。
- 添加 :
- 列表推导式: 一种简洁的创建列表的方式。
python
# 生成 1-10 的平方数列表
squares = [x**2 for x in range(1, 11)]
print(squares) # 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2. 元组 (Tuple)
- 特点 : 与列表类似,但不可变。
- 创建 :
t1 = (),t2 = (1, )(单元素元组必须加逗号),t3 = tuple([1, 2, 3])。
3. 集合 (Set)
- 特点: 无序、元素唯一。
- 创建 :
s1 = {1, 2},s2 = set()(空集合)。 - 常用方法 :
add(x),remove(x),discard(x),pop(),clear()。
4. 字典 (Dict)
- 特点: 以键值对(key-value)形式存储,键必须唯一且不可变。
- 创建 :
d1 = {"name": "Alice"},d2 = dict(name='Bob')。 - 访问 :
d[key]或d.get(key, default)。 - 常用方法 :
keys(),values(),items():返回可迭代的视图对象。- 添加/修改 :
d[key] = value或update({key: value})。 - 删除 :
pop(key),popitem(),clear()。
第6章:函数
1. 定义与调用
- 定义 :
def 函数名(参数列表):。 - 调用 :
函数名(参数列表)。 - 返回值 : 使用
return语句返回结果。若没有return,函数返回None。
2. 参数传递
- 位置参数: 按位置传递实参。
- 关键字参数 : 通过
形参名=值的方式传递,可交换顺序。 - 默认参数 : 在定义时为形参设置默认值,如
def connect(ip, port=8080):。 - 打包与解包 :
*args: 接收任意数量的位置参数,打包成一个元组。**kwargs: 接收任意数量的关键字参数,打包成一个字典。- 解包时,在列表/元组前加
*,在字典前加**。
python
# *args 打包
def sum_all(*args):
return sum(args)
print(sum_all(1, 2, 3, 4)) # 输出:10
# **kwargs 打包
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=18)
# 输出:
# name: Alice
# age: 18
3. 变量作用域
- 局部变量: 在函数内部定义,仅在函数内有效。
- 全局变量 : 在函数外部定义,全局有效。在函数内部修改全局变量需要使用
global关键字。 nonlocal关键字: 用于在嵌套函数中修改外层函数的变量。
4. 特殊函数
-
递归函数 : 函数内部调用自身,必须包含边界条件 和递归公式 。
- 经典案例:阶乘
pythondef factorial(n): if n == 1: # 边界条件 return 1 else: # 递归公式 return n * factorial(n-1) print(factorial(5)) # 输出:120 -
匿名函数 (Lambda) : 使用
lambda关键字定义,函数体只能是一个表达式。常用于需要一个简单函数但不想正式定义def的场景。
python
# lambda 函数:计算平方
square = lambda x: x ** 2
print(square(5)) # 输出:25
第7章:文件与数据格式化
1. 文件操作
- 打开 :
open(file, mode='r'),mode可以是r(读),w(写, 覆盖),a(追加),b(二进制) 等。 - 读取 :
read([size]): 读取 size 个字节或全部内容。readline(): 读取一行。readlines(): 读取所有行,返回列表。
- 写入 :
write(str): 写入字符串。writelines(list): 写入一个字符串列表。
- 关闭 :
close(): 手动关闭文件。with open(...) as f:: 上下文管理器,自动关闭文件,推荐使用。
python
# 使用 with 语句安全地读取文件
with open('example.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content)
2. 文件与目录管理 (os 模块)
os.remove(path): 删除文件。os.rename(old, new): 重命名文件/目录。os.getcwd(): 获取当前工作目录。os.mkdir(path)/os.rmdir(path): 创建/删除目录。os.listdir(path): 获取目录下的所有文件和文件夹列表。
3. 数据格式化
- 一维数据: 线性排列,使用分隔符,如 CSV(逗号分隔值)。
- 二维数据: 表格形式,可以看作多条一维数据的集合。
- 多维数据 : 使用键值对表示,如 JSON 格式。Python 的
json模块提供了dumps()和loads()用于 JSON 与 Python 对象的转换。
python
import json
# Python 对象 -> JSON 字符串
data = {"name": "Alice", "score": 100}
json_str = json.dumps(data)
print(json_str) # 输出:{"name": "Alice", "score": 100}
# JSON 字符串 -> Python 对象
new_data = json.loads(json_str)
print(new_data['name']) # 输出:Alice
第8章:面向对象
1. 类与对象
- 类 (Class) : 是具有相同属性和方法的对象的抽象模板。定义使用
class关键字。 - 对象 (Object) : 根据类创建的具体实例。创建使用
类名()。
python
class Car:
# 类属性
wheels = 4
# 构造方法,创建对象时自动调用
def __init__(self, brand, color):
# 实例属性
self.brand = brand
self.color = color
# 实例方法
def drive(self):
print(f"这辆{self.color}的{self.brand}正在行驶...")
# 创建对象
my_car = Car("Tesla", "红色")
print(my_car.brand) # 输出:Tesla
my_car.drive() # 输出:这辆红色的Tesla正在行驶...
2. 类的成员
- 属性 :
- 类属性: 在类内部、方法外部定义,被所有实例共享。
- 实例属性 : 在方法内部定义(通常用
self),每个实例独立拥有。
- 方法 :
- 实例方法 : 第一个参数为
self,代表实例本身,只能通过对象调用。 - 类方法 : 使用
@classmethod装饰,第一个参数为cls,代表类本身。 - 静态方法 : 使用
@staticmethod装饰,无默认参数,是一个独立于类实例的函数。
- 实例方法 : 第一个参数为
- 私有成员 : 名称以双下划线
__开头,在类外部无法直接访问,但可以通过公有方法间接访问。
3. 三大特性
- 封装: 将数据(属性)和操作数据的方法(行为)捆绑在一起,并隐藏内部细节,通过公共接口访问。
- 继承 : 子类可以继承父类的公有属性和方法,实现代码复用。
- 单继承 :
class Dog(Animal):。 - 多继承 :
class Son(Father, Mother):。 - 方法重写 : 子类可以重写父类的方法,使用
super()可以调用父类被重写的方法。
- 单继承 :
- 多态: 同一个方法在不同对象上可以有不同的行为。
python
# 单继承与重写示例
class Animal:
def speak(self):
print("动物发出声音")
class Dog(Animal):
# 重写父类方法
def speak(self):
print("汪汪汪!")
class Cat(Animal):
# 重写父类方法
def speak(self):
print("喵喵喵!")
def make_animal_speak(animal):
animal.speak()
# 多态:同一个函数,传入不同对象,行为不同
make_animal_speak(Dog()) # 输出:汪汪汪!
make_animal_speak(Cat()) # 输出:喵喵喵!
第9章:异常处理
1. 异常捕获 (try-except)
- 使用
try...except语句捕获并处理异常,防止程序因异常而崩溃。
python
try:
num = int(input("请输入一个整数: "))
result = 10 / num
print(f"结果是: {result}")
except ValueError:
print("错误:请输入一个有效的整数!")
except ZeroDivisionError:
print("错误:除数不能为0!")
except Exception as e: # 捕获所有其他异常
print(f"发生了一个未知错误: {e}")
else:
# try 块没有异常时执行
print("运算成功完成。")
finally:
# 无论是否发生异常,都会执行
print("感谢使用。")
2. 抛出异常
raise: 主动抛出一个异常。
python
def set_age(age):
if age < 0 or age > 120:
raise ValueError("年龄必须在0到120之间")
print(f"年龄设置为: {age}")
try:
set_age(150)
except ValueError as e:
print(f"出错了: {e}") # 输出:出错了: 年龄必须在0到120之间
assert: 断言,条件为False时抛出AssertionError异常。- 自定义异常 : 继承
Exception类或其子类。
python
class ShortPasswordError(Exception):
"""自定义密码长度不足的异常"""
def __init__(self, length, min_length):
self.length = length
self.min_length = min_length
try:
pwd = input("请输入密码(至少6位): ")
if len(pwd) < 6:
raise ShortPasswordError(len(pwd), 6)
except ShortPasswordError as e:
print(f"密码长度不足!当前长度为{e.length},至少需要{e.min_length}位。")