一文了解“*”星号在Python中的多种用法

云课堂学Python 2024-04-09 01:45:23

大多数 Python 程序员都熟悉使用星号进行乘法运算和幂运算,但在本文中,您将了解星号的隐藏用法。

* 和 **

“*” 用作乘法运算符,而 “**” 用作幂运算符。

>>> a = 2>>> b = 3>>> a * b6>>> a ** b8解包

使用 * 从列表/元组/集合中解压缩元素。假设我们要将列表的第一个元素分配给 a,将其余元素分配给 b。通常,我们将使用切片来实现这一点。

n = [i for i in range(1, 6)]a = n[0]b = n[1:]print(a, b)# 输出1 [2, 3, 4, 5]

如果使用 * 运算符解包,一行代码即可实现。

n = [i for i in range(1, 6)]a, *b = nprint(a, b)

还可以处理元组和集合,就像处理列表一样。

>>> a, *b, c = (1, 2, 3, 4, 5)>>> print(a, b, c)1 [2, 3, 4] 5>>> a, *b, c = {1, 2, 3, 4, 5}>>> print(a, b, c)1 [2, 3, 4] 5

还可以嵌套解包。

n = ["abc", "def", "ghi", "jkl"][[x, *y], *z] = nprint(x)print(y)print(z)# 输出:a['b', 'c']['def', 'ghi', 'jkl']

使用 ** 解包字典。

d = {"a":1, "b":2, "c":3}str1 = "a是:{a};b是:{b};c是:{c}".format(**d)print(str1)# 输出:a是:1;b是:2;c是:3函数中解包

"*" 可以在函数参数中解包可迭代对象。如果我们输出一个列表的所有元素,一般情况下考虑使用循环遍历,如果使用 * 将更容易。

list1 = [1, 2, 3, 4, 5]print(*list1)# 输出:1 2 3 4 5

同样,使用 “**” 解包字典。

def myFun2(a,b,c): print("a:",a) print("b:",b) print("c:",c)dict1={'a':10,'b':20,'c':30}myFun2(**dict1)# 输出:a: 10b: 20c: 30函数可变参数def cheng(x,y): return x*yprint(cheng(2,3))

在上面的程序中,我们定义了一个带有两个参数的函数。我们在调用函数时传递两个,我们得到两个数字的乘积作为输出。

如果我们需要计算三个数字的乘积,该怎么办?如果尝试向函数添加额外的参数print(cheng(2,3)),程序将返回错误。

当我们不确定函数的参数数量时,我们使用 *args 作为参数。Python允许我们将可变数量的参数传递给函数。

def cheng(*args): c=1 for n in args: c=c*n return cprint(cheng(2,3)) #输出6print(cheng(2,3,4)) #输出24print(cheng(2,3,4,5)) #输出120

**kwargs 参数允许我们将字典类型的键值对参数传递给函数。

def myFun(**kwargs): for i in kwargs: print(i,'-',kwargs[i])myFun(a=10, b=20, c=30, d=40)# 输出:a - 10b - 20c - 30d - 40

文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!

0 阅读:0