python
主页 > 脚本 > python >

python星号(*)和双星号(**) 函数动态参数匹配及解包操作方法

2023-03-05 | 佚名 | 点击:

1.乘法和幂运算符

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

1

2

3

4

>>> 2*3

>>> 6

>>> 2**3

>>> 8

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

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

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

1

2

3

4

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. 可迭代对象解包操作

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

1

2

3

4

5

6

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 。

1

2

3

4

5

6

7

8

9

10

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.扩展可迭代对象解包

解包的语法。

1

2

3

4

5

6

L = [1, 2, 3, 4, 5, 6, 7, 8]

a, *b = L

print(a)

# 1

print(b)

# [2, 3, 4, 5, 6, 7, 8]

原文链接:https://blog.csdn.net/m0_67316550/article/details/129307721
相关文章
最新更新