函数的定义
-
定义:
函数就相当于工具,拿来就可以使用
先定义后调用
-
函数定义阶段:
只检测语法,不执行代码
为何用函数
如果不使用函数,写程序将会遇到下面三种问题:
-
程序冗长
-
程序的扩展性差
-
程序的可读性差
定义函数的三种形式
- 空函数
当你知道需要的某个功能,你可以暂时写个空函数,不使用
def func():
pass
- 有参函数
在函数定义阶段括号内有参数,称为有参函数。定义有参函数意味着必须传入参数值
如果函数体代码逻辑需要依赖外部传入的值,必须得定义成有参函数。
def sum_self(x, y):
"""求和"""
res = x+y
print(res)
sum_self(1,2) # 3
- 无参函数
定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名
在函数阶段括号内没有参数,称为无参函数
注意:定义时无参,意味着调用时也无需传入参数。
如果函数体代码逻辑不需要依赖外部传入的值,必须定义成无参函数。
函数的调用
函数名(…)
即调用函数,会执行函数体代码,直到碰到return或者执行完函数体内所有代码结束。
函数运行完毕所有代码,如果函数体不写return,则会返回None。
def foo():
pass
print(foo())
None
函数的返回值
可以返回任意类型数据
return的特性:
- return 返回一个返回值,如果没有返回值,返回None
- 没有return 默认返回None
- return 会终止函数,不运行下面的代码,假设有多个return的时候,运行到第一个就会结束,不会运行第二个
- return 通过逗号隔开,可以返回多个值,返回值以元组的形式接收
函数的参数
有参函数:在函数定义阶段括号内有参数,称为有参函数
默认形参: 1. 如果你不给,使用默认值;如果调用的时候传值,使用传的值 2. 默认形参必须得放在位置形参后面
关键字实参:1. 按照形参名传参 2. 关键字实参必须得放在位置实参的后面
形参:定义函数阶段的产物,具有接收实参的作用,具有描述意义
实参:调用阶段的产物,传给形参一个具体的值,具有具体的值(可以为所有数据类型)
位置形参:从左到右依次接收实参的值
位置实参:从左到右依次给位置形参传值,一一对应,形参有多少个,实参也必须有多少个
可变长参数
可变长参数:指的是在调用函数时,传入的参数个数可以不固定
调用函数时,传值的方式无非两种,一种是位置实参,另一种是关键字实参,因此形参也必须得有两种解决方法,以此来分别接收溢出的位置实参(*)与关键字实参(**)