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

【Python 语法糖小火锅 · 第 2 涮】

一、糖味一句话

星号 * 和 ** 就是 Python 的「拆包神器」:
把序列/字典“哗”地倒出来,再“嗖”地装进变量或函数,一次到位,不洒不漏。


二、1 行示例 3 连发

# ① 序列拆包:头尾随便抓
head, *body, tail = range(5)          # head=0, body=[1,2,3], tail=4# ② 字典合并:两份配置一张表
merged = {**defaults, **user_cfg}     # 后者覆盖前者# ③ 星号形参:任意长度位置 & 关键字
def log(fmt, *args, **kw):print(fmt.format(*args), kw)       # kw 记录额外字段

三、真实场景:函数调用一键展开

需求:把 query_params 字典直接塞进 requests.get(),同时再补一个默认 timeout=3

import requests
query_params = {'q': 'python', 'page': 2}
resp = requests.get('https://api.github.com/search/repositories',params={**query_params, 'per_page': 10},timeout=3)

解释:

  • {**query_params, 'per_page': 10} 先把原字典“倒空”,再加新键。
  • 无需手动 copy(),也不会修改原字典。

四、防踩坑小贴士

  1. 星号只能拆一次:
    a, *b, *c = seq ❌ 会 SyntaxError。
  2. 字典拆包时键冲突,后者覆盖前者;若需保留两份,用 collections.ChainMap
  3. 函数定义里 *args 必在 **kwargs 之前,顺序颠倒直接 SyntaxError。

记忆口令 :“一 * 拆序列,两 ** 拆字典;函数收摊全兜底,顺序别搞反。”

http://www.dtcms.com/a/323308.html

相关文章:

  • 医院信息系统(HIS)的功能与应用详解
  • MySQL 元数据详细说明
  • RNN——LSTM(deep-learning)学习
  • Python自动化测试断言详细实战代码
  • BroadcastChannel:轻松实现前端跨页面通信
  • JavaWeb03——javascript基础语法
  • 嵌入式 Linux Mender OTA 实战全指南
  • 国家药品监督管理局医疗器械唯一标识管理信息批量导入mysql工具
  • 算法篇----模拟
  • 企业级高性能web服务器
  • 沿街晾晒识别误检率↓76%:陌讯多模态融合算法实战解析
  • VisionPro常用标定方式
  • 本科毕业论文怎么引用github里面数据集
  • Vue3从入门到精通: 2.2 Vue3组件通信与数据传递深度解析
  • AI热点周报(8.3~8.9):OpenAI重返开源,Anthropic放大招,Claude4.1、GPT5相继发布
  • 心灵笔记:正念冥想
  • imx6ull-驱动开发篇16——信号量与互斥体
  • SpringBoot学习日记 Day6:解锁微服务与高效任务处理
  • .NET程序跨平台ARM电脑上发布的程序格式是,so还是DLL?
  • AWT 基本组件深入浅出:Button/Label/TextField/Checkbox/Choice/List 全面实战与性能优化
  • GPT-4 vs GPT-5 深度分析
  • 逻辑回归详解:原理、应用与实践
  • n沟道增强型mos管
  • 支持 UMD 自定义组件与版本控制:从 Schema 到动态渲染
  • Beelzebub靶机通关教程
  • java 中 @NotBlank 和 @NotNull 的区别
  • 【LLM实战|llamaIndex】llamaIndex介绍和RAG
  • dnSpy:设置断点
  • Docker 容器中运行昇腾(Ascend)AI 环境
  • Vitalik谈以太坊:ETH财库储备策略“有益且有价值”