1.函数的返回值
return关键字的作用
return是一个关键字,在pycharm里,会变成蓝色的关键字。
1.1没有写返回值
如果未定义返回值,会默认返回一个None。
1 def my_len(str): 2 length = 0 3 for i in str: 4 length += 1 5 print(length) 6 ret = my_len('hello,world') 7 print(ret)
1.2 返回一个值
1 def my_len(str): 2 length = 0 3 for i in str: 4 length += 1 5 return length 6 ret = my_len('hello,world') 7 print(ret)
1.3返回多个值
返回的多个值会被组织成元祖, 也可以用多个值来接收
1 def ret_demo(): 2 """ 3 4 :return: 多个值 5 """ 6 return 1,2,3,4 7 def ret_demo2(): 8 return 1,['a','b'],3,4 9 10 ret = ret_demo() 11 print(ret) # (1, 2, 3, 4) 12 ret2 = ret_demo2() 13 print(ret2)# (1, ['a', 'b'], 3, 4)
原因:序列化解压
1 # 序列解压一 2 a,b,c,d = (1,2,3,4) 3 print(a) 4 a,_,_,d = (1,2,3,4) 5 print(d) 6 a,*_ =(1,2,3,4) 7 print(*_) 8 # 同样也适用于字符串、列表、字典、集合 9 a,b = {'name':'eva','age':18} 10 print(a,) 11 print(b)
2. 函数的参数
2.1 位置参数
2.1.1 按照位置传值
1 # 位置传参 2 def mymax(x,y): 3 return x if x>y else y 4 ma = mymax(10,20) 5 print(ma)
2.1.2 按照关键字传值
1 # 按照关键字位置去传递参数 2 def mymax(x,y): 3 return x if x>y else y 4 ma = mymax(y=10, x=20) 5 6 print(ma)
2.1.2位置、关键字混合使用
1 def mymax(x,y): 2 return x if x>y else y 3 ma = mymax(10,y=20) 4 print(ma)
正确用法:
①、位置参数必须在关键字参数的前面
②、对于一个形参只能赋值一次
2.2 默认参数
2.2.1.正常使用
为什么要有默认参数:将变化比较小的值设置为默认参数
2.默认参数的定义
1 # 默认参数 2 def stu_info(name,sex="male"): 3 print(name,sex) 4 return 'a' 5 print(stu_info('alex')) 6 print(stu_info('eva','female'))
2.2.2 参数陷阱
参数陷阱:默认参数是一个可变数据类型
1 # 参数陷阱:默认参数是一个可变数据类型 2 def defult_param(a,l=[]): 3 l.append(a) 4 print(l) 5 print(defult_param('egon')) 6 print(defult_param('alex'))
2.3 动态参数
动态参数,也叫不定长参数,也就是你需要传递的参数很多,不定个数,这种情况下,需要使用*args,**kwargs,
*args是元祖形式,接收出去键值对以外的所有参数。
*kwargs接收的只是键值对的参数,并且只保存在字典中
1 def trans_para(*args, **kwargs): 2 print(args, type(args)) 3 print(kwargs, type(kwargs)) 4 # 调用 5 trans_para("jinxin",12,[1,2,3,4,],[3,4,],(1,4,7),{"a": "123", "c":456}, country="china")