位置参数、关键字参数和默认参数的规则
先定义一个简单的函数def introduce(name, age, city广州): print(f{name}{age}岁来自{city})1. 位置参数Positional Arguments规则按位置顺序一一对应传入缺一不可多一不可。调用时传入的顺序必须和函数定义的顺序一致。这是最基础的传参方式。introduce(小明, 25, 深圳) # 正确小明-name, 25-age, 深圳-city introduce(25, 小明) # 错误类型错乱因为25被赋给了name2. 默认参数Default Arguments规则定义时赋值必须放在所有位置参数之后。如果调用时不传参数就使用默认值。关键规则默认参数必须排在位置参数的右边否则语法错误。# 正确 def func(a, b10): pass # 错误SyntaxError def func(a1, b): pass # 默认参数不能出现在位置参数之前调用示例introduce(小红, 22) # 输出小红22岁来自广州用了默认city introduce(小红, 22, 上海) # 输出小红22岁来自上海覆盖默认值3. 关键字参数Keyword Arguments规则调用时用“参数名值”的方式指定顺序可以打乱。让你能明确指定给哪个参数赋值提高可读性。必须放在所有位置参数之后即先位置后关键字。introduce(age25, name小刚) # 正确顺序可颠倒 introduce(小刚, city北京, age25) # 正确先位置小刚给name后面关键字随意 introduce(name小刚, 25) # 错误关键字参数不能在位置参数之前三者混合使用的规则定义函数时位置参数 → 默认参数调用函数时位置参数 → 关键字参数并且同一个参数不能既传位置又传关键字重复赋值会报错综合示例def example(a, b, c10, d20): print(a, b, c, d) # 正确混合 example(1, 2) # 1 2 10 20 example(1, 2, d30) # 1 2 10 30 c用默认d用关键字 example(1, b3, c4) # 1 3 4 20 a用位置b/c用关键字 # 错误混合 example(a1, 2) # 错误关键字参数不能在位置参数之前 example(1, a2) # 错误a被重复赋值位置给了1关键字又给2一个容易忽略的重要提醒坑点默认参数的值只在函数定义时计算一次。如果默认值是可变对象如列表、字典会有共享问题。def add_item(item, lst[]): lst.append(item) return lst print(add_item(1)) # [1] print(add_item(2)) # [1, 2] —— 不是你预期的 [2]解决办法默认值用None内部再创建新列表。def add_item(item, lstNone): if lst is None: lst [] lst.append(item) return lst4.*args—— 接收多余的位置参数作用把调用时传入的多余位置参数打包成一个元组tuple。名称args只是约定俗成的名字关键是前面的星号*。你也可以写*numbers。规则必须放在所有普通位置参数和默认参数之后。def func(a, b, *args): print(fa{a}, b{b}, args{args}) func(1, 2, 3, 4, 5) # 输出a1, b2, args(3, 4, 5) ← 多余的3,4,5被收进元组5.**kwargs—— 接收多余的关键字参数作用把调用时传入的多余关键字参数打包成一个字典dict。名称kwargs也是约定俗成关键是前面的双星号**。规则必须放在所有参数的最后面包括*args之后。def func(a, b, **kwargs): print(fa{a}, b{b}, kwargs{kwargs}) func(1, 2, name小明, city广州) # 输出a1, b2, kwargs{name: 小明, city: 广州}完整排序规则定义函数时参数的顺序必须是位置参数 →*args→ 默认参数 →**kwargs示例def full_example(a, b, *args, c10, d20, **kwargs): print(a, b, args, c, d, kwargs) # 调用 full_example(1, 2, 3, 4, c30, e100, f200) # 输出1 2 (3, 4) 30 20 {e: 100, f: 200} # 解释 # 1,2 → a,b位置 # 3,4 → args多余位置参数 # c30 → 覆盖默认参数c # d 没传 → 用默认值20 # e,f → kwargs多余关键字参数调用时的“解包”用法反向操作除了在定义时用星号还可以在调用时用把列表/字典拆开传参# 把列表拆成位置参数 nums [1, 2, 3] def add(a, b, c): return a b c print(add(*nums)) # 输出 6 相当于 add(1,2,3) # 把字典拆成关键字参数 info {name: 小红, age: 22} def introduce(name, age): print(f{name} {age}岁) introduce(**info) # 相当于 introduce(name小红, age22)一个重要的坑和默认参数一起用注意如果*args和默认参数同时出现默认参数只能通过关键字方式传入否则会被*args吞掉。def test(a, *args, b10): print(a, args, b) test(1, 2, 3) # 输出1 (2, 3) 10 ← b只能取默认值 test(1, 2, b20) # 输出1 (2,) 20 ← 正确给b赋值 test(1, 2, 3, 20) # 20被当成位置参数吞进argsb还是10

相关新闻

收藏 | 前端小白进阶大模型工程师,从零打造全栈AI项目实战路线图

收藏 | 前端小白进阶大模型工程师,从零打造全栈AI项目实战路线图

先说句实话:这篇文章不是写给别人看的,是写给一年前的我自己看的。 过去这几年,我越来越明显地陷入一种状态——学得越来越多,但心里越来越没底。课听了不少,资料收藏了一堆,AI 工具用得很溜,可…

2026/6/30 1:33:07阅读更多 →
【大模型原理与微调实战05】大模型预训练核心逻辑:自回归与掩码语言建模(GPT/BERT本质区别)

【大模型原理与微调实战05】大模型预训练核心逻辑:自回归与掩码语言建模(GPT/BERT本质区别)

专辑专栏:大模型原理与微调实战|从Transformer底层到大模型定制落地 文章标签:#大模型 #LLM #预训练 #GPT #BERT #大模型训练原理 #自回归建模 阅读前置:本专栏聚焦纯大模型核心体系,只讲原理、训练、量化、微调,剔除无关冗余内容,循序渐进搭建完整LLM技术体系。 上节…

2026/6/30 1:28:07阅读更多 →
没策略的画册,再好看也白做_长沙画册设计

没策略的画册,再好看也白做_长沙画册设计

没策略的画册,再好看也白做_长沙画册设计TL;DR 90%企业做画册执着高颜值,但颜值≠信任,流量≠线索有策略的画册先想清楚三个问题:生意问题、信息顺序、核心记忆点策略型画册的正确顺序:信任→能力→价值,顺…

2026/6/30 1:28:07阅读更多 →
指针空置类型-nullptr

指针空置类型-nullptr

先看一段代码&#xff1a;#include <iostream> using namespace std;void func(char* p) {cout << "void func(char* p)" << endl;cout << p << endl; }void func(int p) {cout << "void func(int p)" << endl;…

2026/6/30 2:33:11阅读更多 →
开题报告毫无思路,有哪些好用的 AI 论文工具?保姆级实测推荐

开题报告毫无思路,有哪些好用的 AI 论文工具?保姆级实测推荐

每年毕业季&#xff0c;大批本科生、硕博生卡在开题第一步&#xff1a;选题毫无方向、文献综述梳理杂乱、研究框架逻辑断层、写好初稿查重 / AIGC 检测双双超标&#xff0c;熬几个通宵交出的稿子还被导师打回重改。通用 AI 大模型不懂学术规范&#xff0c;写出来的开题空泛无创…

2026/6/30 2:33:11阅读更多 →
Chroma报错chromadb.errors.InvalidArgumentError: Collection expecting embedding with dimension of 1024,

Chroma报错chromadb.errors.InvalidArgumentError: Collection expecting embedding with dimension of 1024,

如标题所示&#xff0c;在使用Chroma存储数据到向量库中后&#xff0c;进行检索操作报错&#xff0c;报错内容为chromadb.errors.InvalidArgumentError: Collection expecting embedding with dimension of 1024, got 1536 但这个错误在我把模型从text-embedding-v1切换为text-…

2026/6/30 2:33:11阅读更多 →
中小型园区网络交付全流程完整解析

中小型园区网络交付全流程完整解析

一、整体交付核心框架 中小型园区网络交付采用行业标准化三段式闭环流程&#xff1a;前期规划设计 → 现场施工部署 → 上线测试验收。整套流程兼顾网络稳定性、内网安全性与后期运维便捷性&#xff0c;广泛适用于企业厂区、小型产业园、院校校区、产业小院等终端规模在50–500…

2026/6/30 2:33:11阅读更多 →
从0x27服务看UDS安全访问:种子与密钥的实战解锁指南

从0x27服务看UDS安全访问:种子与密钥的实战解锁指南

1. 0x27服务与UDS安全访问的核心逻辑 第一次接触汽车电子诊断时&#xff0c;我被ECU上那个小小的锁形图标难住了整整三天。后来才知道&#xff0c;这背后是UDS协议中**安全访问服务&#xff08;0x27&#xff09;**的典型应用场景。简单来说&#xff0c;它就像汽车ECU的"门…

2026/6/30 2:33:11阅读更多 →
1.2 HSA的Topology sysfs 布局与发现机制

1.2 HSA的Topology sysfs 布局与发现机制

摘要&#xff1a; 本文聚焦 KFD Topology 的发现过程——内核如何通过 sysfs 暴露拓扑信息&#xff0c;libhsakmt 如何一次性加载为内存快照&#xff0c;以及 Node ID 映射、generation_id 等辅助机制。各 Properties 的字段详解见后续专题文档。 前文给出了描述异构系统的四个…

2026/6/30 2:28:11阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月&#xff0c;Boris Cherny 公开宣布自己卸载了 IDE。一时间&#xff0c;Vibe Coding 成了全行业最热的话题。6个月后&#xff0c;当我们回过头来拉一份真实账本&#xff0c;发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/29 3:27:55阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言&#xff1a;审计结束三个月了&#xff0c;审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间&#xff0c;内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中&#xff0c;审计…

2026/6/29 2:19:08阅读更多 →
为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南

为什么你需要Destiny 2 Solo Enabler:技术原理与实战指南

为什么你需要Destiny 2 Solo Enabler&#xff1a;技术原理与实战指南 【免费下载链接】Destiny-2-Solo-Enabler Repo containing the C# and XAML code for the D2SE program. Included is also the dependency for the program, and image asset. 项目地址: https://gitcode…

2026/6/30 0:02:58阅读更多 →
第六章:PowerPoint 2010 核心功能与实战应用 —— 从入门到精通

第六章:PowerPoint 2010 核心功能与实战应用 —— 从入门到精通

1. PowerPoint 2010基础操作全攻略 刚接触PowerPoint 2010时&#xff0c;很多人会被它复杂的界面吓到。其实只要掌握几个核心区域&#xff0c;就能快速上手。我最开始用PPT时&#xff0c;经常找不到功能按钮在哪&#xff0c;后来发现主要操作都集中在顶部功能区。 工作窗口主要…

2026/6/30 0:02:58阅读更多 →
XGBoost超参数实战:从理论到调优策略

XGBoost超参数实战:从理论到调优策略

1. XGBoost超参数基础认知 第一次接触XGBoost时&#xff0c;我被它那密密麻麻的参数列表吓到了。这感觉就像面对一架波音747的驾驶舱——每个按钮都可能有神奇的效果&#xff0c;但按错了就可能坠机。经过多年实战&#xff0c;我发现其实掌握十几个核心参数就能解决90%的问题。…

2026/6/30 0:02:59阅读更多 →