🐍 Python 核心知识点:从零开始快速构建 Python 知识体系

这篇文章将会系统地提炼 Python 的核心知识点、语法特性和编程风格,帮助你高效地建立完整的 Python 知识体系。

一、基础语法

1.1 变量与赋值

Python 不需要专门的关键字来声明变量,直接赋值即可。

  • 赋值: name = "张三"
  • 命名规范: 推荐使用 snake_case(下划线命名),如 is_student
  • 空值: 使用 None 表示空值。
  • 布尔值: 只有 TrueFalse,首字母必须大写。
Python 复制代码
name = "张三"
age = 25
is_student = True
score = None

1.2 函数定义

使用 def 关键字定义函数,函数体通过 缩进 来界定。

  • 定义: 使用 def 关键字,后跟函数名和参数列表,以冒号 : 结束。
  • 函数体: 必须缩进。
  • 默认参数: 可以在参数列表中设置默认值,如 age=18
  • lambda 表达式: 用于创建简单的单行匿名函数。
  • f-string: 用于字符串格式化(类似模板字符串)。
Python 复制代码
# 普通函数 
def greet(name):
    return f"Hello, {name}!"

# lambda 函数
add = lambda a, b: a + b

# 带默认参数的函数
def create_user(name, age=18):
    return {"name": name, "age": age}

1.3 控制流程

1.3.1 条件语句

使用 ifelif(而不是 else if)和 else。代码块由冒号 :缩进 确定。

  • 三元表达式: 语法为 value_if_true if condition else value_if_false
Python 复制代码
if age >= 18:
    print("成年人")
elif age >= 13:
    print("青少年")
else:
    print("儿童")

# 三元表达式
status = "成年" if age >= 18 else "未成年"

1.3.2 循环语句

1. for 循环: 主要用于迭代序列(列表、字符串等)或使用 range() 函数生成数字序列。

  • 生成数字序列: range(start, stop, step)
  • 带索引遍历: 使用 enumerate() 函数同时获取索引和值。
Python 复制代码
# 迭代数字 (0 到 4)
for i in range(5):
    print(i)

# 遍历列表
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
    print(fruit)

# 带索引遍历
for index, fruit in enumerate(fruits):
    print(index, fruit)

2. while 循环: 循环逻辑与大多数语言相似。

  • 自增/自减: Python 没有 i++i-- 语法,使用 i += 1i -= 1
Python 复制代码
i = 0
while i < 5:
    print(i)
    i += 1

二、数据类型

Python 是强类型语言,明确区分不同的数据类型。

2.1 基本数据类型

类型 Python 名称 说明
字符串 str 单引号 ' 和双引号 " 完全等价。
整数 int 支持任意大小的整数。
浮点数 float 标准浮点数。
布尔值 bool TrueFalse
空值 None 唯一的空值。
列表 list 可变的序列(类似数组)。
字典 dict 键值对集合(类似对象/Map)。
集合 set 无序、不重复的元素集合。
元组 tuple 不可变 的序列(Python 特有)。

2.2 数字运算

Python 明确区分整数和浮点数。

  • 类型: 使用 type() 函数获取类型,如 type(42) 返回 <class 'int'>
  • 浮点除法: / 运算符(如 5 / 2 结果为 2.5)。
  • 整除: // 运算符(如 5 // 2 结果为 2)。
  • 幂运算: ** 运算符(如 5 ** 2 结果为 25)。

2.3 字符串操作

字符串是不可变的序列。

  • 长度: 使用内置函数 len() 获取长度,如 len(str)
  • 方法: str.upper()str.lower()str.split()str.replace() 等。
  • 子串检查: 使用 in 关键字,如 "World" in str
  • 切片: 使用简洁的切片语法 [start:end](不包含 end)。
  • f-string: 最常用的格式化方式,如 f"你好, {name}!"
  • 多行字符串: 使用三引号 """..."""'''...''' 创建。
Python 复制代码
str = "Hello World"
print(len(str))        # 11
print("World" in str)  # True
print(str[0:5])        # "Hello"

2.4 类型转换

Python 不会自动进行隐式类型转换,必须使用对应的类型构造函数进行显式转换。

  • str(value):转换为字符串。
  • int(value):转换为整数。
  • float(value):转换为浮点数。
  • bool(value):转换为布尔值。
Python 复制代码
print(int("5") + 3)      # 8
print("5" + str(3))      # "53"
# print("5" + 3)         # TypeError (不允许字符串和数字直接相加)

三、列表(List)和元组(Tuple)

3.1 列表 (List)

列表是 Python 中最常用的可变序列类型。

3.1.1 创建与访问

  • 创建: arr = [1, 2, 3]
  • 负索引: 支持负索引,-1 表示最后一个元素,-2 表示倒数第二个元素。
Python 复制代码
arr = [1, 2, 3, 4, 5]
print(arr[0])   # 1
print(arr[-1])  # 5

3.1.2 常用方法

功能 Python 方法 说明
添加元素(末尾) list.append(item)
添加元素(任意位置) list.insert(index, item)
删除元素(末尾/指定索引) list.pop()list.pop(index)
删除指定值 list.remove(value) 删除第一个匹配的值,找不到会报错。
删除指定索引 del list[index] 更通用的删除语法。
查找索引 list.index(value) 找不到会报错。
检查存在 value in list 使用 in 关键字。
排序 list.sort() 原地 排序(修改原列表)。
排序(返回新列表) sorted(list) 返回一个新的排序后的列表。
反转 list.reverse() 原地 反转。
长度 len(list) 使用 len() 函数。

3.1.3 强大的切片操作

切片是 Python 的核心特性之一,用于获取列表的子集。语法为 [start:end:step]

Python

scss 复制代码
arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(arr[2:5])   # [2, 3, 4]  (从索引 2 到 5, 不含 5)
print(arr[:5])    # [0, 1, 2, 3, 4]
print(arr[5:])    # [5, 6, 7, 8, 9]
print(arr[-3:])   # [7, 8, 9]  (最后 3 个元素)
print(arr[::2])   # [0, 2, 4, 6, 8] (每隔一个取一个)
print(arr[::-1])  # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] (反转)

# 切片赋值 (修改列表)
arr[2:5] = [20, 30, 40]

3.2 列表推导式 (List Comprehension)

这是 Python 最优雅、最高效的特性之一,用于快速生成和转换列表。

  • 基本形式: [expression for item in iterable]
  • 带条件过滤: [expression for item in iterable if condition]
Python 复制代码
numbers = [1, 2, 3, 4, 5]

# 映射: [1, 4, 9, 16, 25]
squares = [x**2 for x in numbers]

# 过滤: [4, 16]
even_squares = [x**2 for x in numbers if x % 2 == 0]

# 扁平化嵌套列表
nested = [[1, 2], [3, 4]]
flat = [item for sublist in nested for item in sublist]  # [1, 2, 3, 4]

3.3 元组 (Tuple)

元组是 Python 特有的不可变序列(只读)。一旦创建,元素不能修改。

  • 创建: point = (10, 20)
  • 解包: 元组支持解包,常用于函数返回多个值和变量交换。
Python 复制代码
# 创建元组
rgb = (255, 128, 0)

# 解包
r, g, b = rgb
print(g)  # 128

# 优雅地交换变量
a, b = 1, 2
a, b = b, a
# a 现在是 2, b 现在是 1

四、字典(Dict)

字典是 Python 的键值对集合,类似其他语言中的对象或 Map。

4.1 创建与访问

  • 创建: 键必须是不可变类型(如字符串、数字、元组),值可以是任意类型。
  • 访问: 只能使用括号语法 dict[key]
  • 安全访问: 推荐使用 dict.get(key, default_value),键不存在时返回 None 或默认值,避免 KeyError
Python 复制代码
user = {
    "name": "张三",
    "age": 25,
    "email": "zhangsan@example.com"
}

print(user["name"])              # "张三"
print(user.get("age"))           # 25
print(user.get("phone", "未设置")) # "未设置" (键不存在,返回默认值)

# print(user.name)  # 错误: 字典没有点语法访问

4.2 常用方法

功能 Python 方法/语法 说明
获取所有键 dict.keys() 返回键的视图对象。
获取所有值 dict.values() 返回值的视图对象。
获取键值对 dict.items() 返回键值对的视图对象(包含元组)。
检查键存在 key in dict
删除键值对 del dict[key]dict.pop(key) pop 会返回被删除的值。
合并字典 dict1.update(dict2){**dict1, **dict2} update 会修改原字典。
清空 dict.clear()

4.3 字典遍历

遍历字典最常用的方式是使用 dict.items() 方法。

Python 复制代码
user = {"name": "张三", "age": 25, "city": "北京"}

# 遍历键值对 (最常用)
for key, value in user.items():
    print(f"{key}: {value}")

# 遍历键
for key in user.keys():
    print(key)

# 遍历值
for value in user.values():
    print(value)

4.4 字典推导式 (Dict Comprehension)

与列表推导式类似,用于快速生成字典。

  • 形式: {key_expression: value_expression for item in iterable}
Python 复制代码
numbers = [1, 2, 3, 4]
# {1: 1, 2: 4, 3: 9, 4: 16}
squared_dict = {x: x**2 for x in numbers}

# 带条件过滤
even_squared = {x: x**2 for x in numbers if x % 2 == 0} # {2: 4, 4: 16}

五、Python 独有的强大特性

5.1 集合 (Set)

集合是无序且元素唯一的集合。常用于去重和集合运算。

  • 创建: set1 = {1, 2, 3}

  • 去重: unique = list(set(numbers))

  • 集合运算:

    • 并集: set1 | set2set1.union(set2)
    • 交集: set1 & set2set1.intersection(set2)
    • 差集: set1 - set2

5.2 多重赋值与解包

Python 允许在一个语句中为多个变量赋值,并支持序列解包。

Python 复制代码
# 多重赋值
a, b, c = 1, 2, 3

# 序列解包 (使用 * 收集剩余元素)
first, *rest, last = [1, 2, 3, 4, 5]
print(rest)  # [2, 3, 4]

# 字典解包 (用于函数参数)
user = {"name": "李四", "age": 30}
def greet(name, age):
    return f"{name} is {age} years old"
print(greet(**user))

5.3 生成器 (Generator)

生成器是惰性求值的迭代器,按需生成数据,适合处理大数据以节省内存。

  • 生成器表达式: 使用圆括号 () 而非方括号 [],如 squares_gen = (x**2 for x in range(1000000))
  • 生成器函数: 在函数中使用 yield 关键字。

5.4 上下文管理器 (with 语句)

with 语句用于自动管理资源,确保在代码块结束时(无论是否发生异常)资源能够被正确清理,常用于文件操作。

Python 复制代码
# 文件会自动关闭
with open("data.txt", "r", encoding="utf-8") as file:
    content = file.read()
    # ...

六、面向对象编程

Python 的面向对象是基于类的。

  • 类定义: 使用 class 关键字。
  • 构造函数: 使用特殊方法 __init__(self, ...)
  • 实例方法: 所有实例方法(非静态方法)的第一个参数必须是 self,代表实例本身。
  • 继承: class Dog(Animal):
Python 复制代码
class Animal:
    def __init__(self, name):
        self.name = name
    
    def speak(self):
        print(f"{self.name} makes a sound")

七、Python 最佳实践

7.1 Python 编程风格 (PEP 8)

遵循 Python 官方代码风格指南 PEP 8,使代码更具可读性。

  • 命名: 变量、函数和方法使用 snake_case(如 calculate_average)。
  • 常量: 使用全大写(如 MAX_VALUE)。
  • 代码块: 强制使用 4 个空格缩进。

7.2 常见陷阱

  • 可变默认参数: 永远不要使用可变对象(如列表 [] 或字典 {})作为函数的默认参数,因为它们只会被创建一次并在函数调用间共享。
Python 复制代码
# 正确做法
def add_item(item, items=None):
    if items is None:
        items = []
    items.append(item)
    return items
  • 作用域: Python 没有块级作用域 (如 if 块),但有函数作用域

7.3 真值判断

Python 的真值判断规则相对直观:除了以下值被认为是 False 外,其他所有值都被视为 True

  • False
  • None
  • 数字 0(包括整数、浮点数)
  • 空序列:""(空字符串),[](空列表),()(空元组)
  • 空映射:{}(空字典)
  • 空集合:set()
相关推荐
C嘎嘎嵌入式开发2 小时前
deepseek-r1大模型的本地部署
人工智能·python·神经网络·机器学习
柯南二号2 小时前
【大前端】【Android】用 Python 脚本模拟点击 Android APP —— 全面技术指南
android·前端·python
码界奇点2 小时前
基于Django与Vue.js的RBAC权限管理系统设计与实现
vue.js·python·车载系统·django·毕业设计·源代码管理
翔云 OCR API3 小时前
赋能文档的数字化智能处理:通用文字/文档/合同识别接口
开发语言·人工智能·python·计算机视觉·ocr
电饭叔3 小时前
如何代码化,两点之间的距离
笔记·python·算法
秋刀鱼 ..3 小时前
第三届教育发展与社会科学国际学术会议 (EDSS 2026)
大数据·python·计算机网络·数学建模·制造
天才少女爱迪生3 小时前
【算法设计】GLM-4.5V模型架构和算法设计详解
python·算法·语言模型
艾上编程3 小时前
第一章——办公自动化之Excel批量合并工具:Python助力高效办公
开发语言·python·excel
元亓亓亓4 小时前
LeetCode热题100--739. 每日温度--中等
python·算法·leetcode