Python学习——函数参数详解

通透理解Python函数传参机制,最全介绍python传参 1、基础函数创建 2、带有参数的函数 3、带有默认值的函数 4、位置实参和关键字实参 5、可变参数收集 阅读详情
AI摘要

本文详细介绍Python函数的参数传递机制。涵盖位置、可变、关键字和混合参数的定义、特点与示例,阐述参数传递的处理流程,包括匹配位置参数、收集可变参数、处理关键字参数,还给出示例应用及注意事项,助你灵活构建函数参数结构。

Python中的函数参数传递机制允许多种灵活的参数类型,可以根据需求灵活配置参数,这使得函数具有更强大的扩展性和适应性。以下是对各类参数类型的详细说明:

1. 定义函数的不同参数类型

1.1 位置参数
  • 定义方式:def func(a, b=2)
  • 特点:
    • 必须按顺序传递,否则会抛出TypeError。
    • 缺少时使用默认值。
  • 示例:
    def func(a, b=2):
        print(f"a={a}, b={b}")
    
    • func(1) → a=1, b=2
    • func(1,3) → a=1, b=3
1.2 可变参数(*args)
  • 定义方式:def func(*args)
  • 特点:
    • 接收所有未命名的位置参数,存储为元组。
    • 适用于接受任意数量位置参数的情况。
  • 示例:
    def func(*args):
        print(f"args={args}")
    
    • func(1,2,3) → args=(1,2,3)
    • func() → args=()
1.3 关键字参数(**kwargs)
  • 定义方式:def func(c=4, **kwargs)
  • 特点:
    • 接收所有未命名的关键字参数,存储为字典。
    • 适用于需要传递可变数量的关键字参数的情况。
  • 示例:
    def func(c=4, **kwargs):
        print(f"c={c}, kwargs={kwargs}")
    
    • func(key1=1) → c=4, kwargs={‘key1’:1}
    • func(key2=2, key3=3) → c=4, kwargs={‘key2’:2, ‘key3’:3}
1.4 混合参数
  • 可以在同一个函数中混合使用位置、默认、可变和关键字参数。
  • 示例:
    def func(a, b=2, *args, c=4, **kwargs):
        print(f"a={a}, b={b}, args={args}, c={c}, kwargs={kwargs}")
    
    • func(10) → a=10, b=2, args=(), c=4, kwargs={}
    • func(10,5,6,7) → a=10, b=5, args=(6,7), c=4, kwargs={}
    • func(10, key1=1) → a=10, b=2, args=(), c=4, kwargs={‘key1’:1}
    • func(10, key1=1, key2=2) → a=10, b=2, args=(), c=4, kwargs={‘key1’:1, ‘key2’:2}

2. 参数传递的处理流程

  • 步骤一:匹配位置参数

    • 首先,尝试将提供的位置参数与定义中的位置参数对应。如果没有足够的参数且缺少默认值,则抛出错误。
  • 步骤二:收集可变参数(*args)

    • 剩余的未命名的位置参数会被收集到args元组中。
  • 步骤三:处理关键字参数

    • 检查是否有未指定为位置的关键字参数。如果存在,则将这些关键字参数添加到kwargs字典中。

3. 示例应用

3.1 使用可变参数和关键字参数
def greet(name, age, *args, city="北京", **kwargs):
    return f"欢迎!{name},你是{age}岁,并且来自{city}."
  • 调用方式:
    • greet("张三", 30) → 欢迎!张三,你是30岁。
    • greet("李四", 25, "上海") → 欢迎!李四,你是25岁,来自上海。
    • greet("王五", 28, "广州", province="山东") → 欢迎!王五,你是28岁,来自广州。
3.2 使用混合参数
def calculate(a, b=0, *args, c=5, d=10, **kwargs):
    return f"a={a}, b={b}, args={args}, c={c}, d={d}, kwargs={kwargs}"
  • 调用方式:
    • calculate(10) → a=10, b=0, args=(), c=5, d=10, kwargs={}
    • calculate(15, 20, 30, 40, city="上海") → a=15, b=20, args=(30,40), c=5, d=10, kwargs={‘city’:‘上海’}

4. 注意事项

  • 关键字参数必须明确声明,否则会导致语法错误。
  • *args和**kwargs不能同时使用在同一个参数位置,除非明确分隔。
  • 参数传递顺序需遵守定义顺序,混用时需注意位置与关键字的匹配。

通过掌握这些知识,你可以灵活地构建函数参数结构,满足不同的需求。

Python函数参数详解:位置参数、关键字参数与默认参数 本文全面解析了Python函数参数的类型与使用技巧。首先介绍了函数参数的基础概念,区分了参数与参数的区别。随后详细探讨了三种主要参数类型:位置参数、关键字参数和默认参数,分析了它们的特点、优势及注意事项。文章还通过对比表格展示了不同参数类型的特性和适用场景。此外,介绍了参数使用的高级技巧,包括强制关键字参数、可变位置参数(*args)和可变关键字参数(**kwargs),并总结了参数组合使用的规则。最后,文章强调了理解Python函数参数传递机制的重要性,为编写清晰、可维护的代码提供了实用指导。 阅读详情

相关推荐

深入解析 Python 中的函数参数类型详解

参数类型定义方式调用方式特点位置参数​​​​简单直观,但需注意参数顺序默认值参数​​​​func(1)​​​ 或 ​​提供默认值,可减少调用复杂性命名参数​​​​提高代码可读性,避免顺序错误可变参数​​​​灵活处理任意数量的参数强制命名参数​​​​强制使用命名方式,代码更加明确。

Web安全工具库 1423

python函数参数传递(params, *params, **params)

一般最开始接触也就是最简单的函数参数形如 def fuc(x) ,但是也有复杂的函数参数传递方式,总结一下python的传参方式,先介绍一下参数的基本类型,最后讲到最复杂的(**params)类型。 1. 位置参数 一个最简单的函数形式,其中x,y就是位置参数: def add_both(x, y): return x+y 2. 默认参数 最大的好处是能降低调用函数的难度; ...

Cherzhoucheer的博客 2万+

Python 函数参数详解

函数体函数通过 def关键字定义,后面跟着函数名称和一对圆括号,圆括号内是函数的参数列表。函数可以有多个参数,也可以没有参数。print(add(3, 5)) # 输出: 8位置参数:按顺序传递给函数。默认参数:提供默认值,调用时可以选择性传递。可变参数(*args和**kwargs:允许函数接受任意数量的位置参数和关键字参数。参数传递:不可变对象按值传递,可变对象按引用传递。解包操作:使用和**可以解包列表或字典并传递给函数。

m0_62599305的博客 819

Python培训2

一、条件语句 1、什么是条件语句 Python 条件语句跟其他语言基本一致的,都是通过一条或多条语句的执行结果( True 或者 False )来决定执行的代码块。 Python 程序语言指定任何非 0 和非空(null)值为 True,0 或者 null 为 False。 执行的流程图如下: 2、if 语句的基本形式 Python 中,if 语句的基本形式如下: if 判断条件: 执行语句…… else: 执行语句…… 之前的章节也提到过,Python 语言有着严格的缩进要求,因此这里

书伯的博客 892

手把手教你用Sentinel-1和SNAP处理InSAR数据:从下载到生成沉降图(附Python脚本)

本文详细介绍了如何使用Sentinel-1数据和SNAP软件处理InSAR数据,从下载到生成地表沉降图的全流程。通过Python脚本实现自动化处理,适用于城市扩张和地质脆弱带的地表沉降监测,提供高性价比的毫米级形变监测方案。

weixin_26800111的博客 265

QComboBox设置最大显示数量多余的用滑动条,以及QComboBox::setMaxVisibleItems()不起作用的问题

QComoboBox是Qt封装的一个选择框的东西,但是我在使用过程中有一点感觉很不好,如图: 不论你往里面添加多少个它都会给你显示全部,甚至给你铺满全屏,后来看了官方文档发现有个setMaxVisibleItems()的方法,我欣喜若狂啊,终于特么的能解决了,但是,很遗憾,不知为啥,我设置上之后并没有起作用,依然会显示全部,后来搜了百度发现有个人是这样解决的 QComboBox *box = ne...

Aboveground的博客 4919

python 函数的参数 (必看)

python中函数是非常重要的一个知识点,想要把函数学习好,就必须要把函数的参数学习好,这样才能够进行很好的传递参数,发挥出应有的作用 函数的参数分类: 形式参数和实际参数 关键字参数 可变类型参数和不可变类型参数 位置参数 可变长度参数 默认值参数 - 形参(形式参数)和实参(实际参数) 形参:就是定义一个函数的时候,函数名称后面 () 中的参数 实参:就是函数调用的时候,() 中的参数 如下实例中,a 就是实参,b 就是形参 # 定义一个函数名为 test_one def .

Chen_798的博客 7855

AI医疗影像诊断工具2025 完整教程

本教程所述工具均为辅助诊断设备,不可替代执业医师判断。部署使用需遵守当地医疗器械管理法规。推荐开源框架组合:代码太多打包上传网盘了 自行下载。2025年的AI医疗影像诊断工具将以。

m0_60084632的博客 2028

【从零学习python 】29. 「函数参数详解」——了解Python函数参数的不同用法

本文介绍了Python函数中的三种参数用法:缺省参数、不定长参数和缺省参数在不定长参数后面的应用。通过示例代码,展示了如何定义和调用带有默认值的参数,以及如何处理不定数量和不定类型的参数。同时,还讲解了可变和不可变类型的概念,并列举了常见的可变和不可变数据结构。通过阅读本文,您将全面了解函数参数的各种用法,并能更灵活地应用于自己的代码中

全栈若城,专注知识分享 8517

SD-WAN组网案例——数据中心

SD-WAN组网案例——数据中心

2301_78457663的博客 705

阿里九宫格验证码 (Baxia SecCaptcha) 逆向工程与自动化求解

实现对阿里巴夏 (Baxia) 九宫格点击验证码的全自动求解模式说明依赖浏览器模式通过 Puppeteer/Playwright 控制真实浏览器,享有完整 DOM/Canvas/WASM 环境需要 Chrome/Chromium纯算模式脱离浏览器,通过 HTTP API + Node.js WASM 解密完成求解无需浏览器。

猫敷雪 376

Python学习笔记--函数参数的详解

函数参数的详解前言位置参数关键字参数参数默认值可变参数小结 前言 def add(a, b): return a + b 定义一个函数,之后去调用他,可以发现调用的时候传入的参数个数需要和定义的时候匹配,如果不匹配就会报错,无论时参数多了还是少了。 位置参数 >>> def add(a, b): ... ret = a + b ... print('{}...

weixin_42726818的博客 321

PDN分析实战:电源完整性设计与Altium PDN Analyzer全流程指南

电源完整性(PI)是嵌入式硬件系统稳定运行的基础能力,其核心在于控制电流密度与电压降两大物理量。基于欧姆定律与热-电耦合原理,PDN分析将抽象的电源噪声问题转化为可量化、可定位的几何与电气参数优化过程。该技术显著提升系统抗干扰能力、降低复位与ADC漂移等隐性故障率,并直接支撑EMC合规性设计。典型应用场景包括电机驱动板、Wi-Fi模块、STM32/ESP32等资源受限型MCU供电网络验证。本文以Altium Designer为工具平台,结合IPC-2152标准与真实工程案例,详解从功率预算、模型构建到瓶颈定

weixin_28949937的博客 228

python学习分享之函数参数详解-有趣的形参与实参

我是我小眼睛优粥面,这篇文章主要介绍的是Python函数中有趣的形参和实参,欢迎大家交流和分享。

小眼睛优粥面的博客 662

【C++PCL】点云文件读写

本文介绍 PCL 中 PCD 与 PLY 点云文件的读取、保存和字段检查,覆盖 PointXYZI、PointXYZRGB、ASCII、二进制及压缩二进制,并给出 C++11 实操代码与参数调试建议。

weixin_45196569的博客 42

AE-扭曲-变形-弧

一些AE效果的着色器实现记录

What_can_you_do的博客 1173

Python学习笔记5:函数参数详解

一、函数的定义格式: def 函数名(参数列表):     函数体 def fun1(a, b, c): return a + b + c 二、位置传递:位置对应 print(fun1(3 ,2 ,1)) 输出: 6 三、关键字传递:位置参数要出现在关键字参数之前 print(fun1(3 ,c = 1, b = 2)) 输出: 6 四、参数默认值:可以给

寒风的技术博客 1720

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Python3学习笔记(十一):函数参数详解

一、位置参数 根据参数的位置来传递参数,调用函数时,传递的参数顺序和个数必须和定义时完全一致 # 定义函数 def man(name, age): print("My name is %s,I am %d years old." % (name, age)) # 调用函数 >>> man('eastonliu',32) My name ...

weixin_34376986的博客 156

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python学习

python学习视频https://ke.qq.com/course/134017#tuin=a7ad455enp.dot函数https://blog.youkuaiyun.com/youmayangguang/article/details/53673584python 里 np.array 的shape ( ,)与( ,1)的区别https://blog.youkuaiyun.com/weixin_39449570/...

hao__ran的博客 188

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python学习tips

  最近毕设要做机器学习相关,考虑到Python这门语言在web里也经常用,后面也会接触大数据,所以借此机会将Python完完整整地过一遍,这篇文章主要记录一下自己在看书和官方文档时对一些需要注意的东西的理解,学习阶段主要参考书为《Python基础教程(第2版)》、《Python核心编程(第3版)》以及官方提供的“Python 2.7.12 documentation”(因为我以前下的是2.7.1...

JeansPocket的博客 413

Python基础学习(6)函数基础与函数参数

一.认识参数 1.特点 2.优点 二.定义函数 三,函数参数 1.必备参数 2.默认参数 3.不定长参数 ①不定长参数1 ②不定长参数2 四,返回值(return) 五,文档字符串 1.**作用**: 2.**语法格式:** 3.输出方式:

Appppiiiiggg的博客 1160

Python函数参数传递

函数传参,实参与形参的传递(一起努力,咱们顶峰相见)

精益求精,永无止境,永远在路上! 1万+

Python 函数参数传递机制(详解)

值得指出的是,主程序中的 dw 是一个引用变量(也就是一个指针),它保存了字典对象的地址值,当把 dw 的值赋给 swap() 函数的 dw 参数后,就是让 swap() 函数的 dw 参数也保存这个地址值,即也会引用到同一个字典对象。将主程序中的 a、b 变量作为参数值传入 swap() 函数,实际上是在 swap() 函数栈区中重新产生了两个变量 a、b,并将主程序栈区中 a、b 变量的值分别赋值给 swap() 函数栈区中的 a、b 参数(就是对 swap() 函数的 a、b 两个变量进行初始化)。

梁辰兴的博客 2314

python函数参数详解

调用函数时,Python语言必须将函数调用中的每个实参都关联到函数的相应形参。最简单的关联方式是基于实参的顺序,这种关联方式被称为位置参数。位置形参:在定义函数时,按照从左到右的顺序依次定义形参位置实参:在调用函数时,按照从左到右的顺序依次传入实参示例4:通过位置参数输出学生的成绩print(f'语文:{a},数学:{b},英语{c}')语文:88,数学:66,英语95对于位置参数,在调用函数时,必须按照顺序输入全部的实参。实参的数量不能多也不能少,顺序也必须和形参保持一致。

2501_92499985的博客 1083

python函数参数定义顺序_Python函数参数详解

Python函数参数详解形参与实参什么是形参在定义函数阶段定义的参数称之为形式参数,简称形参,相当于变量名。什么是实参在调用函数阶段传入的值称为实际参数,简称实参。相当于"变量值"的内存地址。(Ps:Python中的所有传值都是传递的内存地址,因此Python中的传值也被称为引用传值。)实参与形参的关系1.在调用阶段,实参("变量值的内存地址引用")会绑定给形参("变量名")2.这种绑定关系只能在...

weixin_39573512的博客 759
上一篇: python学习——洛谷[NOIP2001 普及组] 数的计算,两种方法详解
下一篇: python学习——函数的返回值
Qhumaing
博客等级 码龄2年 1116粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qhumaing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值