当前位置: 首页 > news >正文

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] = valuekey 存在则修改值,不存在则新增键值对
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 是特殊空值,需注意函数返回值的默认行为。

http://www.cnnetsun.cn/news/1497816.html

相关文章:

  • League-Toolkit:英雄联盟玩家的终极辅助工具集完整指南
  • OpenClaw QQ 插件 v0.6.0 发布:率先适配OpenClaw新版本Plugin-SDK
  • ClickHouse集群部署与管理:从0到1的实战指南
  • 无限级数求和与Java实现优化教程
  • CSS 渐变的高级应用:色彩的流动艺术
  • 西门子1500PLC饮料罐装线:从代码到螺丝刀的全栈开发实录
  • 基于Matlab的Tamura纹理特征提取
  • Javascript提高:JavaScript Promise 超通俗解释-由Deepseek产生
  • 改进下垂控制的孤岛型并联分布式电源微电网系统
  • 建行江门市分行:银发关爱在行动 暖心服务送到家
  • 多策略改进的鲸鱼优化算法(MWOA),与其他三种变体和几种2024最新算法比较,策略都是很新颖的策略
  • 快速验证openclaw启动命令:用快马AI一键生成原型测试脚本
  • 告别‘unbox’失败:Truffle项目初始化保姆级教程,从MetaCoin到自定义合约
  • ESP32物联网设备上云第一步:在VSCode中用ESP-IDF搞定WiFi连接与HTTPS请求(含cJSON解析)
  • HunyuanVideo-Foley效果对比:不同prompt长度对Foley音效细节影响分析
  • 家里装了 OpenClaw,在公司也能随时管理——Shield CLI 远程访问方案
  • 线性代数实战:如何用Python快速判断矩阵能否相似对角化(附代码示例)
  • ESP32 IDF环境下DHT11温湿度读取避坑指南:从时序图到数据拼接的完整解析
  • 别再手动下载了!用Google Earth Engine (GEE) 5分钟批量处理Landsat C2L2数据的完整指南
  • 域组策略深度配置:RDP远程桌面安全加固与权限管理
  • 告别设备移除难题:USB-Disk-Ejector如何革新Windows设备管理体验
  • PyTorch GPU加速报错?3步搞定RuntimeError: No CUDA GPUs are available
  • 保姆级避坑指南:Mid-360雷达到手后,用livox_ros_driver2从接线到出点云的完整流程
  • Arduino库在mbed OS上的高性能移植与实时应用
  • 从Debian到openEuler:如何用alien无缝迁移你的软件包(实战教程)
  • 创5A难落地?巨有科技助力打通数字文旅管理全链路
  • 如何在3个步骤内完成Logisim-Evolution数字电路设计工具的安装配置
  • 无线测温系统的应用场景
  • 面试官问我MESI协议,我画了这张状态流转图给他讲明白了
  • 开源压枪系统:基于像素识别技术的后坐力补偿解决方案