什么是函数
函数就是对具有一定功能的代码块的封装,实现对代码的复用。
定义函数的规则
1.定义:def 关键词开头,空格之后接函数名称和圆括号()。
2.参数:圆括号用来接收参数。若传入多个参数,参数之间用逗号分割。
参数可以定义多个,也可以不定义。
参数有很多种,如果涉及到多种参数的定义,应始终遵循位置参数、*args、默认参数、**kwargs顺序定义。
如上述定义过程中某参数类型缺省,其他参数依旧遵循上述排序
3.注释:函数的第一行语句应该添加注释。
4.函数体:函数内容以冒号起始,并且缩进。
5.返回值:return [表达式] 结束函数。不带表达式的return相当于返回 None
def 函数名(参数1,参数2,*args,默认参数,**kwargs):
"""注释:函数功能和参数说明"""
函数体
……
return 返回值
函数的参数
定义函数的时候,我们将函数的参数名字和位置确定下来,函数的接口定义就完成了,在使用参数时,除了必选参数外,我们还可以使用默认参数、可变参数和关键字参数,是函数可以处理各种传入的数据。
一、位置参数
1.通过位置进行传参
1 def mymax(x, y): 2 the_max = x if x > y else y 3 return the_max 4 5 m = mymax(10,20) 6 print(m)
2.按照关键字传参
1 def mymax(x, y): 2 the_max = x if x > y else y 3 return the_max 4 5 m = mymax(y=20, x=10) 6 print(m)
3.未知参数和关键字参数混用
*** 未知参数必须在关键字参数前面
*** 一个形参只能赋值一次
1 def mymax(x, y): 2 the_max = x if x > y else y 3 return the_max 4 5 m = mymax(10, y=20) 6 print(m)
二、默认参数
***** 注意!
1 def defult_param(a,l = []): 2 l.append(a) 3 print(l) 4 5 defult_param('alex') 6 defult_param('egon')
['alex']
['alex', 'egon']
三、动态参数
1.按位置的动态传参 *args
1 def mysum(*args): 2 the_sum = 0 3 for i in args: 4 the_sum+=i 5 return the_sum 6 7 the_sum = mysum(1,2,3,4) 8 print(the_sum)
2.按关键字的动态传参 **kwargs
1 def stu_info(**kwargs): 2 print(kwargs) 3 print(kwargs['name'], kwargs['sex']) 4 5 stu_info(name = 'alex',sex = 'male')
四 、动态参数的聚合与打散
在形参前的*表示吧接收到的位置参数聚合成一个元组,**表示把接收到的关键字参数聚合成一个字典,而在实参前*表示把字符串、列表、元组等可迭代对象打散,**表示把字典打散。