大多数 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❝
文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!
❞