函数的定义

  • 定义:

    函数就相当于工具,拿来就可以使用

    先定义后调用

  • 函数定义阶段:

​ 只检测语法,不执行代码

为何用函数

如果不使用函数,写程序将会遇到下面三种问题:

  • 程序冗长

  • 程序的扩展性差

  • 程序的可读性差

定义函数的三种形式

  • 空函数
    当你知道需要的某个功能,你可以暂时写个空函数,不使用
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的特性:

  1. return 返回一个返回值,如果没有返回值,返回None
  2. 没有return 默认返回None
  3. return 会终止函数,不运行下面的代码,假设有多个return的时候,运行到第一个就会结束,不会运行第二个
  4. return 通过逗号隔开,可以返回多个值,返回值以元组的形式接收

函数的参数

有参函数:在函数定义阶段括号内有参数,称为有参函数

默认形参: 1. 如果你不给,使用默认值;如果调用的时候传值,使用传的值 2. 默认形参必须得放在位置形参后面
关键字实参:1. 按照形参名传参 2. 关键字实参必须得放在位置实参的后面

形参:定义函数阶段的产物,具有接收实参的作用,具有描述意义
实参:调用阶段的产物,传给形参一个具体的值,具有具体的值(可以为所有数据类型)

位置形参:从左到右依次接收实参的值
位置实参:从左到右依次给位置形参传值,一一对应,形参有多少个,实参也必须有多少个

可变长参数

可变长参数:指的是在调用函数时,传入的参数个数可以不固定

调用函数时,传值的方式无非两种,一种是位置实参,另一种是关键字实参,因此形参也必须得有两种解决方法,以此来分别接收溢出的位置实参(*)与关键字实参(**)