Python 基础核心知识点总结

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) : TrueFalse,本质是整型的子类。
      • 复数 (complex) : 如 1+2j
    • 字符串 (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] = valueupdate({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. 特殊函数

  • 递归函数 : 函数内部调用自身,必须包含边界条件递归公式

    • 经典案例:阶乘
    python 复制代码
    def 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}位。")
相关推荐
2401_844582951 小时前
冷门技巧:AI模型可靠性测试的实用技巧:数
python
爱学习的小邓同学1 小时前
Golang语言入门
开发语言·后端·golang
you鬰1 小时前
datawhale--llm-algo-leetcode5️⃣
python·datawhale
λqaq71 小时前
MySQL 数据库基础(2)约束、用户权限、远程连接、外键与 TCP/UDP 理解
linux·数据库·python·tcp/ip·mysql
人工干智能1 小时前
科普:pandas 时间偏移别名:ts.resample(“5Min“).sum()
python·pandas
开源量化GO2 小时前
最新AI辅助量化表达:先理清规则,再按需求选工具
人工智能·python
Zane19942 小时前
为什么 del 一个对象有时立刻消失,有时却纹丝不动?一文讲透引用计数与垃圾回收
后端·python
IT大白鼠2 小时前
MSF环境搭建全教程(Kali/Windows/Mac/Docker)
windows·macos·msf
编码浪子2 小时前
Rust 智能指针深度实战:Box/Rc/Arc/RefCell 选型决策与内存管理避坑
开发语言·后端·rust