python编程语法基础笔记(3.25)
今天主要学习了 Python 中字典、函数两大核心知识点,涵盖字典的定义与操作、函数的参数、作用域、嵌套、递归等内容,以下是详细梳理:
一、字典(dict):键值对数据容器
1. 核心特性
键(key)不可重复,重复则后值覆盖前值;
键必须是不可变类型(如字符串、数字、元组),值(value)可以是任意类型(列表、字典、数字等);
字典本身是可变类型,支持增删改查操作。
2. 字典定义
# 常规定义(重复键会覆盖) d1 = {'张三':18,'李四':19,'张三':21} # 结果为 {'张三':21,'李四':19} # 空字典定义 d2 = {} d3 = dict() # 特殊键值(元组作键、列表/字典作值) d5 = {('李四','王五'):10} # 元组作为key d8 = {260301: {'name':'zhangsan','age':18}, 2603:['张三','李四']} # 值为字典/列表3. 字典核心操作
| 操作类型 | 方法 / 语法 | 说明 |
|---|---|---|
| 新增 / 修改 | dict[key] = value | key 存在则修改值,不存在则新增键值对 |
dict.update(kwargs) | 批量更新,支持字典、关键字参数、列表元组等格式 | |
| 删除 | del dict[key] | 删除指定键值对,key 不存在报错 |
dict.pop(key, 提示语) | 删除并返回对应值,key 不存在时返回提示语(避免报错) | |
dict.clear() | 清空字典所有键值对 | |
| 查找 | dict[key] | 获取值,key 不存在报错 |
dict.get(key, 提示语) | 获取值,key 不存在返回提示语(默认 None) | |
| 遍历 | dict.keys() | 获取所有键(返回 dict_keys 类型) |
dict.values() | 获取所有值(返回 dict_values 类型) | |
dict.items() | 获取所有键值对(返回 dict_items 类型,每个元素是 (键,值) 元组) |
stu = {'name':'zhangsan','age':18} # 新增 stu['hobby'] = ['basketball', 'soccer'] # 批量更新 stu.update({'age':22}, money='100') # 查找 print(stu.get('hobby', '无此键')) # 存在则返回列表,不存在返回"无此键" # 遍历 for key in stu: print(key, stu[key]) # 遍历键,通过键取值二、函数:可复用的代码块
1. 函数基础
函数是用于执行特定任务的可重复代码块,核心优势:代码复用、结构清晰、支持模块。
def 函数名(参数):
函数体
调用语法:函数名(实参)
函数默认返回 None,可通过return自定义返回值(return 后代码不再执行)
2. 函数参数:灵活的传参方式
| 参数类型 | 语法 | 说明 |
|---|---|---|
| 位置参数 | def func(a,b): ... | 实参按位置顺序传递,与形参一一对应 |
| 关键字参数 | func(name='张三', age=21) | 实参指定键名,顺序可任意 |
| 默认参数 | def func(a, b, c='默认值'): ... | 形参设置默认值,不传则用默认值(需放在参数末尾) |
| 可变位置参数 | def func(*args): ... | 接收任意数量位置参数,打包成元组(tuple) |
| 可变关键字参数 | def func(**kwargs): ... | 接收任意数量关键字参数,打包成字典(dict) |
| 传参限制 | def func(name,/,age,*,gender): ... | /前只能用位置参数,*后只能用关键字参数 |
# 可变参数组合使用 def test3(a,b,*args,c='默认值',**kwargs): print(a,b,c) # 位置参数+默认参数 print(args) # 剩余位置参数打包成元组 print(kwargs) # 关键字参数打包成字典 test3('张三','男','学生','孩子',hobby='篮球')3. 函数作用域:变量的生效范围
全局作用域:py 文件最外层定义的变量,程序运行期间一直存在,可被全局访问;
局部作用域:仅函数内部的变量,函数调用时创建,执行完销毁(if/for/while 不产生局部作用域);
全局变量修改:函数内修改全局变量需用global 变量名声明,否则视为定义局部变量(未声明直接修改会报错)。
m = 100 # 全局变量 def test2(): global m # 声明修改全局变量 m += 10 print(m) # 每次调用+10,输出110、120、130 test2() test2()4. 函数嵌套:函数内调用其他函数
函数执行过程中调用另一个函数,遵循 “先调用先执行” 的顺序,示例:
def test1(): print('进入test1') test2() print('退出test1') def test2(): print('进入test2') test3() print('退出test2') def test3(): print('进入test3') print('执行函数3333333') print('退出test3') test1() # 执行顺序:test1 → test2 → test3 → 反向退出5. 函数递归:自己调用自己
递归是函数嵌套的特殊形式(调用自身),需设置 “终止条件” 避免无限递归
# 递归打印(先递后归) def hello(n): if n>1: hello(n-1) # 终止条件:n≤1时停止递归 print('hello',n) hello(5) # 输出:hello 1 → hello 2 → ... → hello 56. 特殊值 None
None:是一个特殊的字面量,用于表示空值,无值,无意义
1.None的类型是NoneType
2.None出现在判断当中会被当作False
3.None不可以参与数学运算,和字符串拼接
4.如果不给函数设置返回值,默认返回None
函数可以通过return来设置返回值
1.return之后的代码,为函数的返回值
2.自定义函数的运行,return后续的代码将不再执行
def add(a,b): print(f'{a}+{b}') # 无return,默认返回None print(add(1,2)) # 先打印相加信息,再打印None 三、核心总结
1.字典是灵活的键值对容器,重点掌握增删改查的安全操作(如 pop、get 避免报错);
2.函数参数是重点,需区分位置 / 关键字 / 可变参数的使用场景,合理搭配提升函数灵活性;
3.作用域核心:全局变量可在函数内读取,修改需加 global;局部变量仅函数内有效;
4.函数嵌套 / 递归需注意执行顺序,递归必须设置终止条件;
5.None 是特殊空值,需注意函数返回值的默认行为。
