函数参数的灵活使用
1.默认值参数
2.列表参数
1)默认值参数
有参数的函数而言,必须在调用时制定参数
#给函数参数定义默认值
def max(num1=0, num2=0):
if num1 > num2:
return num1
else:
return num2
print(max())#两个形参都为0
print(max(-1))#两个形参分别为-1和0
print(max(1, -1))#两个形参分别为1和-1
---------------------------------------------------------------
#并非所有的参数都必须有默认值
def max(num1, num2=0):
if num1 > num2:
return num1
else:
return num2
print(max(-1, 5))
#输出为0,因为第一个参数为-1,第二个参数默认值为0
------------------------------------------------------------------------------
#常见的错误
def max(num1=0, num2):
if num1 > num2:
return num1
else:
return num2
非默认参数跟随默认参数
(没有默认值的参数不能跟在默认参数后面)
如果可以的话,仅有的一个数值将无法确定,究竟是应该用于改变第一个参数的默认值,还是直接赋给第二个没有默认值的参数
2)列表参数
列表参数并非类型为列表的参数!
#先看看列表类型的参数
def arraySum(num):
sum =0
for iin num:
sum += i
return sum
num = [1, 2, 3, 4, 5]
print(arraySum(num))
#输出是15
--------------------------------------------------------------
#这样对不对
def arraySum(num):
sum =0
for iin num:
sum += i
return sum
num = [1, 2, 3, 4, 5]
print(arraySum(1, 2, 3, 4, 5))
报错,arraySum()接受1个位置参数,但给出5个位置参数
arraySum函数只有1个位置参数,但是却给了5个参数
#解决方法很简单
def arraySum(*num):
sum =0
for iin num:
sum += i
return sum
print(arraySum(1, 2, 3, 4, 5))
*表示序列拆分操作符
函数会把全部的参数拿过来,自动变成一个列表,主要方便处理个数不确定的参数
例:
定义一个函数sumPower,可以计算多个数值的任意幂值之和
比如:
1^2+2^2+3^2+4^2
3^10+10^10+(-1)^10
#1^2+2^2+3^2+4^2
def sumPower(*num, power):
sum =0
for iin num:
sum += i ** power
return sum
print(sumPower(1, 2, 3, 4, 2))
TypeError: sumPower() missing 1 required keyword-only argument: 'power'
类型错误:sumPower()缺少1个必须的仅关键字参数
遗漏了一个必须的关键词参数,原因也很简单,虽然可以理解为1到4的每个数的平方和,但是也可以理解为是5个底数而缺少幂。
网友评论