一、什么是函数
函数:对代码块和功能的封装和定义。需要时可以直接调用。
二、函数的定义及调用
1.定义:
def 函数名(形参): #函数名的命名规则和变量基本一样。
函数体 #函数被执行时所需要执行的代码。
2.调用:
函数名(实参) #调用
三、函数的返回值
当函数执行结束后,可以用return来返回结果。
1.遇到return后,此函数结束,函数后面将不会被执行。
2.return返回值:
如果不写return或者return后面不写返回值,默认返回None。
如果return后面写一个返回值,调用者可以接收到一个结果。
如果return后面写多个返回值,每个值用“,”隔开。调用者可以接收到一个tuple(元组),可以解构成多个变量。
四、函数的参数
1.形参:在函数声明时写的变量叫形参。
2.实参:在函数调用时写的变量叫实参。
3.传参:给函数传递信息的时候将实际参数交给形式参数的过程被称为传参。
4.实参分类:
1.位置参数。在传参过程中,系统会默认按照位置把实参赋值到形参。
2.关键字参数。在传参过程中,要记住形参的名字(关键字),直接给关键字赋值。
3.混合参数,两者一起使用。 注:位置参数必须在关键字参数前面。
5.形参分类:
1.位置参数。按照位置进行赋值。
2.默认值参数。在函数声明时,给出函数参数的默认值。在调用的时候可以给出具体的值;也可以不给值,使用默认值。 注:必须先声明位置参数,才能声明默认值参数。
eg:def stu_info(名字,年龄,性别=“男”) #默认性别:男
3.动态参数。
动态参数分成两种:动态接收位置参数;动态接收关键字参数。
动态接收位置参数:在参数位置前写*表示接收任意个位置参数。
eg:def 函数名(*形参) #可以接收任意内容。 注:多个参数传递进去,收到的内容是元组tuple。
动态接收关键字参数:在参数位置前写**表示接收任意个关键字参数。
eg:def 函数名(**形参) #可以接收任意内容。 注:多个参数传递进去,收到的内容是字典dict。
注:在混合使用时,各个参数的顺序
位置参数 > *args >默认值参数 > **kwargs
补充:动态传参的另一种传参方式。
eg:def func(*args):
print(args)
lst = [1,4,7]
func(*lst) #可以使用*把一个列表按顺序打散。
s = "臣妾做不到"
func(*s) #字符串打散。
dic = {"a":1,"b":2,"c":3}
func(**dic) #字典打散
注:可迭代对象都可以按顺序进行打散。在形参位置上的*表示把接收到的参数组合成一个元组;在形参位置上的**表示把接收到的参数组合成一个字典。
注:函数调用时,实参和形参的个数要一致,否则会报错。
注:每个形参/实参之间用“,”隔开。