参数的分类
1.位置参数。一个标识符做形参。位置参数普通和常用。
def get_max(a, b, c):
max_num = a
if b > max_num:
max_num = b
if c > max_num:
max_num = c
return max_num
get_max(1, 5, 3)
2.默认参数。带默认值的参数。
例子中的step = 1 就是一个默认参数。函数调用时可以默认你参数,那么这个参数的值就是默认值。如果传入实参时,实参会覆盖参数默认值
参数的顺序:默认参数必须在位置参数之后。否则会报错
默认值一般定义为你想要的默认信息,数字类型参数默认值可以定为0,字符串参数默认值 ‘’ ,布尔默认值一般为False.
def myrange(start, end, step=1):
i = start
while i < end:
print(i)
i += step
myrange(1, 10, 2)
3.键值对参数(函数调用时传入实参)
当参数比较多时,超过五个或者更多个时,用位置参数容易混淆出错。
实参 键=值,这样就能准确给形参传值,所以位置顺序可以调换,但是要跟在位置参数的后面。
def print_stu_info(name, sex='male', score=0):
print('姓名:{}, 性别:{}, 分数:{}'.format(name, sex, score))
print_stu_info('小明', score=90, sex='male')
4.可变参数
*args (args为变量)表示传入一串参数,列表类型的参数过多时,方便函数书写定义和调用更方便。
items()方法语法:dict.items() 函数以列表返回可遍历的(键, 值) 元组数组,用以遍历列表。
args:只接收一个列表中的其中一个参数,为了标识参数较多,形如一个列表,用args表示。
student_list = ['小明','小红','小白']
def print_info(*args):
for arg in args:
print(arg)
print_info(*student_list)
# print_info(*['小明','小红','小白']) 可变列表参数
这个例子只传入了一个参数,参数类型为列表,例子中传入的是不同方面的参数,只不过用列表把他们装在了一起,本质是传入多个参数
def print_stu_info(L):
for i in L:
print(i)
print_stu_info(['小明','小红','小白'])
**kwargs 只用于接收形如字典且参数较多的序列
product_dict = {'name':'xbox','price':3000,'weight':5000,'cpu':'','gpu':''}
def print_info(**kwargs):
for x,y in product_dict.items(): # .items()用于遍历字典,只适用于字典
print(x,y)
print_info(**product_dict)
# print_info(**{'name':'xbox','price':3000,'weight':5000,'cpu':'','gpu':''}) # 可变字典参数(实参)
列表、字典
知识点:*args 、**kwargs
def show(*args,**kwargs):
print(args, type(args))
print(kwargs,type(kwargs))
L=[11,22,33,]
d={'n1':88,'zy':'sb'}
show(*L,**d)
函数有哪几种参数?
位置参数、默认值参数、可变参数
顺序有没有要求? 有要求
位置参数 > 默认值参数(在后),
可变参数位置有:*args列表 > **kwargs字典(在后)
参数位置:位置参数(没有默认值的参数) > 默认参数 > list参数(*args) > 字典参数 (**kwargs)