函数的定义
**定义:**将具有独立功能的代码块组成一个整体,使其具有特殊功能的代码集。
**作用:**使用函数可以加强代码的复用性,提高程序编写的效率。
结构:
def 函数名():
函数体
**注意:**函数名要符合标识规定,最好见名知意。
函数:
def hello_elysia(): print('hello,elysia') hello_elysia()
输出:
hello,elysia
返回值return
含义:函数执行结束后,最后给调用者的一个结果。
函数:
def hello_elysia(): return 'hello,elysia' hello_elysia()
直接调用没有回显,需要我们打印
def hello_elysia(): return 'hello,elysia' print('不打印的结果:') hello_elysia() print('打印后的结果:') print(hello_elysia())
输出:
不打印的结果: 打印后的结果: hello,elysia
注意:return后面的代码将不再执行
函数:
def hello_elysia(): return 'hello,elysia' return 520 print('hello,seele') print(hello_elysia())
输出:
hello,elysia
return返回多个值,以元组的形式返回给调用者
函数:
def hello_elysia(): return 'hello,elysia',520,1314 print(hello_elysia())
输出:
('hello,elysia', 520, 1314)
返回值的三种情况
-
一个返回值也没有,返回的结果是None
-
一个返回值,就把值返回给调用者
-
多个返回值,以元组的形式返回给调用者
参数
定义格式:
def 函数名(形参a,形参b)
函数体
调用格式:
函数名(实参a,实参b)
函数:
def hello_darling(name, days): print(f'hello,{name}!520{days}!') hello_darling('elysia', 1314) # name,days是形参 # elysia,1314是实参
输出:
hello,elysia!5201314!
必备参数
含义:必备参数是在函数定义中未指定默认值的参数。当调用函数时,必须为这些参数提供相应的值。
默认参数
含义:为函数提供默认值,调用函数时可以不传该默认参数的值
注意:所有的位置参数必须出现在默认参数前,包括函数定义和调用
格式:
def fun(形参=默认值)
函数体
函数:
def hello_darling(name, days=1314): print(f'hello,{name}!520{days}!') hello_darling('elysia')
输出:
hello,elysia!5201314!
可变参数
含义:传入的值的数量是可以改变的,可以传入多个,也可以不传
格式:
def fun(*args)
函数体
return
函数:
def hello_darling(*args): print(args) print(type(args)) hello_darling('elysia','seele')
输出:
('elysia', 'seele') <class 'tuple'>
注意:可以把args改成其他参数名,但是args符合代码规范性;*args将实参所有的位置参数接受,放置在一个元组中
关键字参数
def fun(**kwargs):
函数体
**kwargs:接受所有的关键字参数将其转换成一个字典赋值给kwargs
作用:可以扩展函数的功能
函数:
def hello_darling(**args): print(args) print(type(args)) hello_darling()#返回字典 hello_darling(name='elysia',age=18)
#传值的时候,需要用键=值的形式
输出:
{} <class 'dict'> {'name': 'elysia', 'age': 18} <class 'dict'>
函数的嵌套
嵌套的定义:在一个函数中定义另一个函数,缩进决定层级。
例子1:
函数:
def hello_lover(name,days): print(f'hello,{name}!520{days}!') def hello_darling(): print('you are my darling!') def lover_darling(): hello_lover('elysia',1314) hello_darling() #在lover_darling()中调用hello_lover()和hello_darling()函数 lover_darling()
输出:
hello,elysia!5201314! you are my darling!
例子2:
函数:
def lover_darling(): def hello_lover(name, days): print(f'hello,{name}!520{days}!') hello_lover('elysia', 1314) # 在lover_darling()中定义并调用hello_lover()函数 lover_darling()
输出:
hello,elysia!5201314! you are my darling!
注意:函数需要调用才能执行,所以上面的hello_lover('elysia', 1314)是在调用函数内定义的新函数;调用时注意缩进;不要在内层函数中调用外层函数,会陷入死循环,直到超过地递归的最大深度