函数设置“可选参数”和“可变参数(可变长度参数或不定长参数)”

news/2024/10/19 10:27:24/

可选参数

可以通过为某一个参数设置默认值,从而变为可选参数,就相当于为你默认设置了参数,而不需要自己再次设置

但是对于复杂的需要传参的函数,这种设置默认参数的行为并没有什么太大的作用

def greet(name, age=None, message="Hello"):print(message, name)if age is not None:print("Age:", age)greet("Charlie")                 # 输出: Hello Charlie
greet("Dave", message="Hi")      # 输出: Hi Dave
greet("Eve", age=25, message="Hey")  # 输出: Hey Eve / Age: 25

可变参数

在 Python 中,你可以使用星号(*)来定义一个参数为可变参数,也称为可变长度参数或不定长参数。这允许你在函数调用时传递任意数量的参数。

以下是两种常见的方式来定义可变参数:

1)*args

使用*args:这种方式可以接收任意数量的位置参数,这种位置参数只能使用输入值进行传递,而不能设置键值对这种形式,因为在函数体内部,args 被视为一个元组(tuple)。

def my_function(*args):for arg in args:print(arg)# 调用函数并传递多个参数
my_function(1, 2, 3)     # 输出: 1 2 3
my_function('a', 'b')    # 输出: a b

在这个示例中,*args 参数定义了可变参数。在函数体内部,args 被视为一个元组(tuple),包含了所有传递给函数的位置参数。

2)**kwargs

使用**kwargs:这种方式可以接收任意数量的关键字参数,这种关键字参数只能使用键值对这种形式,因为在函数体内部,kwargs被视为一个字典(dict)

def my_function(**kwargs):for key, value in kwargs.items():print(key, value)# 调用函数并传递多个关键字参数
my_function(name="Alice", age=25)                      # 输出: name Alice / age 25
my_function(country="USA", city="New York", code=123)  # 输出: country USA / city New York / code 123

在这个示例中,**kwargs 参数定义了可变关键字参数。在函数体内部,kwargs 被视为一个字典(dict),包含了所有传递给函数的关键字参数及其对应的值。

你也可以同时使用 *args**kwargs,以接收任意数量的位置参数和关键字参数。

3)同时使用 *args**kwargs 

def my_function(*args, **kwargs):for arg in args:print("Positional argument:", arg)for key, value in kwargs.items():print("Keyword argument -", key, ":", value)# 调用函数并传递多个位置参数和关键字参数
my_function(1, 2, name="Alice", age=25) 

输出:

Positional argument: 1
Positional argument: 2
Keyword argument - name : Alice
Keyword argument - age : 25


http://www.ppmy.cn/news/884385.html

相关文章

360随身wifi2.0小度wifi猎豹wifi校园网的表现

最近买了小度随身wifi,又买了360随身wifi2.0. 我是校园网。小度wifi不能用,但是可以管理手机照片,需要手机安装百度手机助手。 360wifi2.0可以在校园网使用,但是网络信号不太好,时有时无。 如果是笔记本&#xff0c…

360随身WiFi驱动下载

一场不算太好的体验,但还是解决问题了 360随身WiFi驱动下载地址 事情经过: 某天在家里组装起PC,才发现当时没有在这屋里预留网线接口,走明线穿堂过户肯定是不合适的,还是买个无线网卡吧 自然还是要顶一下360的&#xf…

stm32PID调参实验

使用了增量式PID,有点难调,数据一直在波动。实际中调参具有很大的不确定性,因为你这次调好了,下次再供电发现又不是那么回事。按照网上传统的调参方法,一般是先调P,I和D为0,逐渐增大P使得实际值快速到达目标…

ubuntu16.04 360随身WiFi2

查看kernel版本,插入360随身WiFi2,打开终端,执行下面命令即可。 ------------------------------------------------------------------------------------------------------------- From your kernel version, 4.2.0-16, it appears that…

360随身wifi2驱动 v5.3.0.1035 官方版

360随身wifi2驱动 v5.3.0.1035 官方版 软件大小:13.6MB 软件语言:简体中文 软件类别:硬件驱动 更新时间:2015-03-04 应用平台:/Win8/Win7/WinXP 360随身wifi2驱动为360无线路由器驱动程序,360随身wifi是一款…

《安全体系中的人性漏洞》读书笔记

作者:海德纳吉 ◆ 序 大部分人都觉得自己的家是安全的,直到有一天忽然发现自己被锁在了门外。 无论系统有多安全,总有方法攻破它。通常,系统中的人是最好欺骗和操纵的。制造恐慌、运用影响力、采用操纵策略和建立信任感等方法都可…

python pytorch 纯算法实现前馈神经网络训练(数据集随机生成)-续

python pytorch 纯算法实现前馈神经网络训练(数据集随机生成)-续 上一次的代码博主看了,有两个小问题其实,一个是,SGD优化的时候,那个梯度应该初始化为0,还一个是我并没有用到随机生成batch。 …

windows 指纹识别不可用

提示 我们这边出现了问题。请再次尝试。 1 右键管理员运行cmd,输入net stop wbiosrvc; 2 C:\Windows\System32\WinBioDatabase下面把文件全删; 3 设置-->登录选项-->Windows Hello 指纹 重新录入指纹即可。