☰
Python2
2026/10/11 5:45:29 网站建设 项目流程

数据容器

列表(List)

列表是 Python 中最常用的线性容器,使用方括号定义,元素有序且可以重复,支持增删改查和切片操作。

fruits = ["apple", "banana", "cherry"] fruits.append("orange") # 末尾追加 print(fruits[0]) # 按索引访问 print(fruits[1:3]) # 切片
切片(Slicing)

切片是 Python 中提取序列子集的核心语法,适用于列表、字符串、元组等有序容器。基本格式为序列[起始:结束:步长],其中起始和结束位置可省略,步长默认为 1。

nums = [0, 1, 2, 3, 4, 5] print(nums[1:4]) # [1, 2, 3],含头不含尾 print(nums[:3]) # [0, 1, 2],省略起始 print(nums[3:]) # [3, 4, 5],省略结束 print(nums[::2]) # [0, 2, 4],步长为 2 print(nums[::-1]) # [5, 4, 3, 2, 1, 0],倒序

切片同样适用于字符串和元组,返回对应类型的新对象,不会修改原数据。

text = "Python" print(text[0:3]) # "Pyt" print(text[::-1]) # "nohtyP" tup = (1, 2, 3, 4) print(tup[1:3]) # (2, 3)
列表推导式(List Comprehension)

列表推导式是 Python 中快速生成列表的简洁语法,基本格式为[表达式 for 变量 in 可迭代对象],可配合条件判断进行过滤。

squares = [x * x for x in range(6)] print(squares) # [0, 1, 4, 9, 16, 25] evens = [x for x in range(10) if x % 2 == 0] print(evens) # [0, 2, 4, 6, 8] words = ["apple", "banana", "cherry"] lengths = [len(w) for w in words] print(lengths) # [5, 6, 6]

列表推导式也支持嵌套循环,常用于扁平化二维数据或生成组合。

matrix = [[1, 2], [3, 4], [5, 6]] flat = [num for row in matrix for num in row] print(flat) # [1, 2, 3, 4, 5, 6] pairs = [(x, y) for x in range(3) for y in range(2)] print(pairs) # [(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]

字符串(String)

字符串是不可变的字符序列,使用单引号或双引号定义,支持索引、切片、拼接和格式化等操作。

name = "Python" print(name[0]) # 取第一个字符 print(name.upper()) # 转大写 print(len(name)) # 获取长度

元组(Tuple)

元组是不可变的线性容器,使用圆括号定义,元素有序且可以重复,适合存储不允许修改的数据。

point = (3, 5) x, y = point # 解包 print(x, y) # point[0] = 10 # 报错,元组不可修改

集合(Set)

集合是无序且不重复的容器,使用花括号定义,适合去重和集合运算,如交集、并集、差集。

a = {1, 2, 3} b = {3, 4, 5} c = set() #空集合 print(a & b) # 交集 print(a | b) # 并集 print(a - b) # 差集

字典(Dictionary)

字典是键值对容器,使用花括号加冒号定义,通过键快速访问对应的值,适合关联和查找场景。

person = {"name": "Alice", "age": 25} print(person["name"]) # 按键取值 person["age"] = 26 # 修改值 print(person.keys()) # 获取所有键

总结

函数

函数的定义与调用

函数是 Python 中组织代码、实现复用的核心方式。使用def关键字定义函数,基本格式为def 函数名(参数列表):,函数体需要缩进,可通过return返回结果。

def greet(name): """打印问候语""" print(f"Hello, {name}!") def add(a, b): """返回两数之和""" return a + b 调用函数 greet("Alice") # Hello, Alice! result = add(3, 5) print(result) # 8

函数参数支持默认值、关键字参数和可变参数,灵活适应不同调用场景。

def introduce(name, age=18, *hobbies): print(f"{name} 今年 {age} 岁") print("爱好:", hobbies) introduce("Bob", 20, "篮球", "阅读") Bob 今年 20 岁 爱好: ('篮球', '阅读') def calc(a, b, **kwargs): print(f"a={a}, b={b}, 其他={kwargs}") calc(1, 2, op="add", level=3) a=1, b=2, 其他={'op': 'add', 'level': 3}

函数还可以作为参数传递或作为返回值,这是 Python 函数式编程的基础。

def apply(func, value): return func(value) def double(x): return x * 2 print(apply(double, 5)) # 10 def make_multiplier(n): def multiplier(x): return x * n return multiplier times_3 = make_multiplier(3) print(times_3(7)) # 21

全局变量与局部变量

在 Python 中,变量按作用域分为全局变量和局部变量。在函数外部定义的变量是全局变量,可在整个模块中访问;在函数内部定义的变量是局部变量,只能在函数内部使用。

count = 10 # 全局变量 def show(): name = "Alice" # 局部变量 print(count) # 函数内可读取全局变量 print(name) show() print(name) # 报错,局部变量在函数外不可访问

当函数内需要修改全局变量时,必须使用global关键字声明,否则 Python 会将其视为新的局部变量。

total = 0 def add_one(): global total # 声明使用全局变量 total += 1 add_one() add_one() print(total) # 2,全局变量被成功修改

如果不加global,函数内对同名变量的赋值只会创建局部变量,不会影响全局变量。

value = 100 def try_change(): value = 200 # 未声明 global,创建的是局部变量 print(value) # 200 try_change() print(value) # 100,全局变量未被修改

不定长参数与关键字传参

Python 函数支持不定长参数,用于接收数量不固定的实参。使用*args接收任意数量的位置参数,参数会以元组形式传入;使用**kwargs接收任意数量的关键字参数,参数会以字典形式传入。

def collect(*args): print("位置参数:", args) collect(1, 2, 3) # 位置参数: (1, 2, 3) def collect_kw(**kwargs): print("关键字参数:", kwargs) collect_kw(name="Alice", age=25) # 关键字参数: {'name': 'Alice', 'age': 25}

关键字传参是指在调用函数时,通过参数名=值的方式显式指定参数,这样不依赖参数顺序,代码可读性更高。

def introduce(name, age, city): print(f"{name} 今年 {age} 岁,来自 {city}") introduce(age=20, city="北京", name="Bob") # 关键字传参,顺序可打乱

在实际开发中,*args和**kwargs常组合使用,让函数既能接收任意数量的位置参数,也能接收任意数量的关键字参数。

def show_info(*args, **kwargs): print("位置参数:", args) print("关键字参数:", kwargs) show_info("Python", "Java", level=3, tag="教程") 位置参数: ('Python', 'Java') 关键字参数: {'level': 3, 'tag': '教程'}
from typing import List, Dict, Tuple, Set scores: List[int] = [90, 85, 88] person: Dict[str, int] = {"age": 25} point: Tuple[int, int] = (3, 5) tags: Set[str] = {"python", "教程"}

对于函数参数,还可以使用Optional表示参数可能为None,使用Union表示参数可以是多种类型之一,让类型表达更加灵活。

类型注解(Type Hints)

def add(a: int, b: int) -> int: return a + b name: str = "Alice" age: int = 25 print(add(3, 5)) # 8

类型注解同样适用于容器类型。Python 的typing模块提供了List、Dict、Tuple、Set等泛型标注,可以更精确地描述容器中元素的类型。

from typing import List, Dict, Tuple, Set scores: List[int] = [90, 85, 88] person: Dict[str, int] = {"age": 25} point: Tuple[int, int] = (3, 5) tags: Set[str] = {"python", "教程"}

对于函数参数,还可以使用Optional表示参数可能为None,使用Union表示参数可以是多种类型之一,让类型表达更加灵活。

from typing import Optional, Union def greet(name: Optional[str] = None) -> str: if name is None: name = "朋友" return f"你好,{name}!" def parse(value: Union[int, str]) -> str: return str(value) print(greet()) # 你好,朋友! print(greet("Alice")) # 你好,Alice! print(parse(123)) # 123

当参数可以是多种类型时,除了Union,Python 3.10 起还支持更简洁的|语法,例如int | str表示参数可以是整数或字符串,写法更直观。

def parse(value: int | str) -> str: return str(value) print(parse(123)) # 123 print(parse("hello")) # hello

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询