函数基础
函数定义的三种方式
无参函数
定义函数时参数是函数体接收外部传值的一种媒介,其实就是一个变量名
在函数阶段括号内没有参数,称为无参函数。需要注意的是:定义时无参,意味着调用时也无需传入参数。
如果函数体代码逻辑不需要依赖外部传入的值,必须得定义成
无参函数
有参函数
在函数定义阶段括号内有参数,称为有参函数。需要注意的是:定义时有参,意味着调用时也必须传入参数。
如果函数体代码逻辑需要依赖外部传入的值,必须得定义成有参函数
空函数
当你只知道你需要实现某个功能,但不知道该如何用代码实现时,你可以暂时写个空函数,然后先实现其他的功能
形参和实参
形参和实参的定义
形参是在函数定义时,括号内声明的参数,相当于变量名
实参是在调用函数阶段,括号内传入的值,相当于变量值
位置形参
在定义函数时,按照从左到右的顺序依次定义形参,称为位置形参,凡是按照这种形式定义的形参都必须被传值
位置实参
在调用函数时,按照从左到右的顺序依次定义实参,称为位置实参,凡是按照这种形式定义的实参会按照从左到右的顺序与形参一一对应
关键字参
在调用函数时,实参可以是key=value的形式,称为关键字参数,凡是按照这种形式定义的实参,可以完全不按照从左到右的顺序定义,但仍能为指定的形参赋值
默认参数
在定义函数时,就已经为形参赋值,这类形参称之为默认参数,当函数有多个参数时,需要将值经常改变的参数定义成位置参数,而将值改变较少的参数定义成默认参数
可变长参数
可变长形参之*
形参中的* 会将溢出的位置实参全部接收,然后存储元组的形式,然后把元组赋值给* 后的参数。需要注意的是:* 后的参数名约定俗成为args
可变长实参之*
实参中的* ,* 会将* 后参数的值循环取出,打散成位置实参。以后但凡碰到实参中带* 的,它就是位置实参,应该马上打散成位置实参去看
可变长形参之**
形参中的** 会将溢出的关键字实参全部接收,然后存储字典的形式,然后把字典赋值给** 后的参数。需要注意的是:** 后的参数名约定俗成为kwargs
可变长实参之**
实参中的** ,** 会将** 后参数的值循环取出,打散成关键字实参。以后但凡碰到实参中带** 的,它就是关键字实参,应该马上打散成关键字实参去看
函数对象的四大功能
-
引用
-
当作参数传给一个函数
-
可以当作函数的返回值
-
作为容器类型的元素