python-星号(*)-双星号(**)-函数动态参数匹配-解包操作

文章介绍了Python中的一些核心编程概念,包括乘法和幂运算符的使用,函数如何接收不定数量的参数,如何限制函数参数必须以关键字形式输入,以及可迭代对象的解包操作。此外,还详细解释了扩展解包以及在解包字典时的关键字参数处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.乘法和幂运算符

● 单个 * 用于乘法运算
● 两个 ** 表示幂运算

>>> 2*3
>>> 6
>>> 2**3
>>> 8

2.函数接收数量不固定的入参

在定义函数时,我们可以定义一个以一个或两个星号为前缀的参数,以捕获不限制数量的参数输入。总结如下:
● 以 一个 * 为前缀的参数可以将任意数量的参数以元组形式传入
● 以两个 ** 为前缀的参数可以将任意数量的参数以字典形式传入

3.限制函数入参仅以关键字形式输入

def genius(age, *, first_name, last_name):
    print(first_name, last_name, 'is', age)
genius(28, first_name='Li', last_name='Bai')
# Li Bai is 28

上述代码采用了星号* 限制了星号之后的参数必须采用关键字形式来调用上述函数。

4. 可迭代对象解包操作

使用星号* 来解包可迭代对象。

A = [1, 2, 3]
B = (4, 5, 6)
C = {7, 8, 9}
L = [*A, *B, *C]
print(L)
# [1, 2, 3, 4, 5, 6, 8, 9, 7]

如果我们利用一个*作为dict 的前缀,它的key 将被解包;如果我们使用双星号** 作为前缀,其value 将被解包;此时我们必须显示使用key 来接收解包后的value 。

D = {'first': 1, 'second': 2, 'third': 3}

print(*D)
# first second third

# print(**D)
# TypeError: 'first' is an invalid keyword argument for print()

print('{first},{second},{third}'.format(**D))
# 1,2,3

5.扩展可迭代对象解包

解包的语法。

L = [1, 2, 3, 4, 5, 6, 7, 8]
a, *b = L
print(a)
# 1
print(b)
# [2, 3, 4, 5, 6, 7, 8]

Python 函数参数中,星号 `*` 和星号 `**` 是用于处理可变数量的参数的强大工具。它们允许函数接受任意数量的位置参数和关键字参数。 ### 星号 `*` 的作用 - **收集位置参数为元组**:当在函数定义中使用 `*args` 时,所有额外的位置参数都会被收集到一个名为 `args` 的元组中。 ```python def my_function(*args): for arg in args: print(arg) my_function(1, 2, 3) ``` - **解包可迭代对象为位置参数**:在函数调用时,如果传递给函数的是一个可迭代对象(如列表或元组),可以使用 `*` 来解包这个可迭代对象,将其元素作为单独的位置参数传入函数[^3]。 ```python def add(a, b): return a + b numbers = [1, 2] result = add(*numbers) # 相当于 add(1, 2) ``` ### 星号 `**` 的作用 - **收集关键字参数为字典**:在函数定义中使用 `**kwargs` 时,所有额外的关键字参数会被收集到一个名为 `kwargs` 的字典中,键是参数名,值是对应的参数值。 ```python def bar(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") bar(name='Alice', age=30) ``` - **解包字典为关键字参数**:在函数调用时,如果有一个字典包含了需要传递给函数的关键字参数,可以使用 `**` 来解包这个字典,使其内容作为关键字参数传入函数[^4]。 ```python def greet(name, message): print(f"{message}, {name}!") info = {'name': 'Bob', 'message': 'Hello'} greet(**info) # 相当于 greet(name='Bob', message='Hello') ``` ### 使用方法 当你想要创建一个能够处理不确定数量参数函数时,你可以这样定义你的函数- 如果你需要处理不确定数量的位置参数,可以在函数定义中使用 `*args`。 - 如果你需要处理不确定数量的关键字参数,可以在函数定义中使用 `**kwargs`。 此外,在实际编程中,`*` 和 `**` 还可以用来强制要求某些参数必须以关键字形式提供,这通常与普通参数一起使用来分隔那些必须以关键字形式提供的参数。 例如: ```python def example(a, *, b, c): pass example(1, b=2, c=3) # 正确: b 和 c 必须以关键字形式给出 # example(1, 2, 3) # 错误: b 和 c 需要关键字形式 ``` 通过这种方式,Python 提供了非常灵活的方式来处理函数参数,使得编写通用且易于使用的函数成为可能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值