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 5
6. 特殊值 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 是特殊空值,需注意函数返回值的默认行为。
更多推荐
所有评论(0)