Python——使用任意数量的关键字实参

自己学习Python时,关于“使用任意数量的关键字实参”用法有点儿迷,现记录一下。如有不足,烦请指正。

传递任意数量的关键字实参
①已知前几个参数的确定信息,不知道余下的信息是什么
②存储类别为——字典
比如:
采集一个学生的信息,必须采集的有:身高、体重;剩下的信息按照需要采集。
就可以用以下的例子:

def info(height, weight, **others):
    student = {}
    student['身高'] = height      #身高和体重是确定的信息
    student['体重'] = weight
    for k, v in others.items():   #其它的信息不确定
        student[k] = v
    return student

#定义两个学生字典,二者都有身高和体重信息。剩下的信息随机指定
student_1 = info('157cm', '49kg', 姓名 = '张三', 性别 = '女')
student_2 = info('183cm', '61kg', 专业 = 'GIS', 姓名 = '李四', 学号 = 1007, 性别 = '男')

print(student_1)
for k, v in student_1.items():
    print(k, v, sep = ' : ')

print("\n")
print(student_2)
for k, v in student_2.items():
    print(k, v, sep = ' : ')

代码的输出为:

{'身高': '157cm', '体重': '49kg', '姓名': '张三', '性别': '女'}
身高 : 157cm
体重 : 49kg
姓名 : 张三
性别 : 女


{'身高': '183cm', '体重': '61kg', '专业': 'GIS', '姓名': '李四', '学号': 1007, '性别': '男'}
身高 : 183cm
体重 : 61kg
专业 : GIS
姓名 : 李四
学号 : 1007
性别 : 男



 

### Python 函数参数解析 #### 1. 参数类型概述 Python 支持多种类型的函数参数,包括位置参数、默认值参数、关键字参数、可变位置参数 `*args` 和可变关键字参数 `**kwargs`。这些参数使得函数更加灵活和强大。 #### 2. 定义带有不定长参数的函数 当不确定调用者会传入多少个参数时,可以使用 `*args` 来接收任意数量的位置参数[^3]: ```python def example_args(*args): print(f"Received arguments: {args}, type is {type(args)}") example_args(1, "two", 3.0) ``` 对于关键字参数,则可以通过 `**kwargs` 接收任意数量关键字参数: ```python def example_kwargs(**kwargs): for key, value in kwargs.items(): print(f"{key} -> {value}") example_kwargs(name="Alice", age=30) ``` #### 3. 组合使用不同类型的参数 可以在同一个函数定义中混合使用上述提到的各种参数类型。需要注意的是,如果同时存在普通参数和其他特殊形式的参数,它们之间应该按照一定的顺序排列:首先是普通的必选参数,其次是具有默认值得参数,默认值之后是可以接受多个输入项的形式化参数(即 `*args`),最后才是能够收集额外命名变量的形式化参数(也就是 `**kwargs`)。下面是一个例子来展示这一点: ```python def complex_function(required_arg, default_arg='default', *args, **kwargs): print(f"Required argument: {required_arg}") print(f"Default argument: {default_arg}") print(f"*args received: {args}") print(f"**kwargs received: {kwargs}") complex_function('must provide this one', extra_positional=987654321, another_extra_keyword=True) ``` #### 4. 打包与解包操作 除了作为形参外,星号运算符还可以用来做实参的打包或解包工作。比如当我们有一个列表想要将其所有成员一次性当作独立元素传递给某个只接受单个数值或其他对象的方法/函数时就可以利用这种特性;反之亦然——如果我们希望把几个单独的对象组合起来作为一个整体对待的话也可以这样做[^4]。 ##### 实际应用案例 - 解包序列赋值给函数 假设我们已经得到了一组数据存储在一个元组里边,并且现在要把它分发到不同的地方去处理,这时便可以用到解构语法: ```python data_tuple = ('apple', 'banana', 'cherry') first_item, second_item, third_item = data_tuple print(first_item) # 输出 apple print(second_item) # 输出 banana print(third_item) # 输出 cherry ``` 同样地,在调用其他支持多参数输入的功能模块之前也允许先准备好待传输的数据集合再通过这种方式展开后再交给对方处理 : ```python numbers_list = [1, 2, 3] max_value = max(*numbers_list) print(max_value) # 输出最大数 ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值