十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
只是一个分隔符,隔离必须参数与命名参数,后面的参数都要有默认值
成都创新互联专业为企业提供彭水苗族土家族网站建设、彭水苗族土家族做网站、彭水苗族土家族网站设计、彭水苗族土家族网站制作等企业网站建设、网页设计与制作、彭水苗族土家族企业网站模板建站服务,10年彭水苗族土家族做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。
一:数学运算符,*表示乘法,**表示取幂,如:
二:用在变量的前面。
1,向函数传递参数,将变量中可迭代对象的元素拆解出来,作为独立的参数第传给函数,如:
双引号(**),变量为字典,将其拆解出来,单独传给函数。如:
2,在函数定义中使用,收集参数。将参数捕捉到一个元组中,如:
该用法允许我们创建自己的函数时,可以接收任意数量的参数。
双星号可以将参数捕捉到字典中,如:
1、函数定义时
-使用单个 * 会将所有的参数,放入一个元组(tuple)供函数使用。
-使用两个 ** 将所有的关键字参数(键-值对形式),放入一个字典(dict)供函数使用。
2.函数调用时
-在list,tuple,set前加一个星号会把容器中的所有元素解包(unpack)变成位置参数。
-在dict前加一个星号会把字典的键变成位置参数。
-在dict前加两个星号会把字典的键值对变成关键字参数。
1、* 的具体使用。位置参数和可变参数的灵活使用
1.1 在函数定义时候,将所有的位置参数放入一个元祖中
1.2 在函数调用时使用*,将list、tuple、set,解包成位置参数。
2、**的具体使用。关键字参数和可变参数的具体使用。
2.1 在函数定义时
3、 和 * 在函数中一起使用
注意,在*arg之后,函数只接收关键字参数
*代表的是参数个数不确定的情况;带一个星号(*)参数的函数传人的参数存储为一个元组(tuple);而带两个星号(*)参数的函数传人的参数则存储为一个字典(dict);由于传入的参数个数不定,所以当与普通参数一同使用时,必须把带星号的参数放在最后。
在Python函数中,还可以定义可变参数。
如:给定一组数字a,b,c……,请计算a2 + b2 + c2 + ……。
要定义出这个函数,我们必须确定输入的参数。由于参数个数不确定,我们首先想到可以把a,b,c……作为一个list或tuple传进来,这样,函数可以定义如下:
def calc(numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
但是调用的时候,需要先组装出一个list或tuple:
calc([1, 2, 3])
14
calc((1, 3, 5, 7))
84
如果利用可变参数,调用函数的方式可以简化成这样:
calc(1, 2, 3)
14
calc(1, 3, 5, 7)
84
所以,我们把函数的参数改为可变参数:
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
定义可变参数和定义list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数:
calc(1, 2)
5
calc()
如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:
nums = [1, 2, 3]
calc(nums[0], nums[1], nums[2])
14
这种写法当然是可行的,问题是太繁琐,所以Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:
nums = [1, 2, 3]
calc(*nums)
14
这种写法相当有用,而且很常见。