(7)python 函数和lambda表达式

时间:2023-03-09 16:41:44
(7)python 函数和lambda表达式

一、函数定义和调用

1.定义函数用def

(7)python 函数和lambda表达式

2.函数注释

在函数体里的开头写上字符串,可以起到说明的作用

(7)python 函数和lambda表达式

可以用函数名.__doc__的方式读取在函数开头加的字符串(双下划线)

(7)python 函数和lambda表达式

内建的help()函数也能返回此信息

(7)python 函数和lambda表达式

3.多返回值

返回多个值时,会以元组的形式返回

(7)python 函数和lambda表达式

可以用序列解包的方式获取多个值

(7)python 函数和lambda表达式

4.无返回值

当函数无返回值时,会自动返回None。return 的关键字可写可不写(但是最好写上,避免混乱)

(7)python 函数和lambda表达式

5.递归函数

二、函数参数

1、位置参数

固定顺序的参数就是位置参数

2、关键字参数

在调用函数时,通过实参赋值的方式传入参数

这种方式可以打乱传入的位置,

(7)python 函数和lambda表达式

调用时参数必须和定义参数时的变量名一致

(7)python 函数和lambda表达式

这样就会出现错误

3.混用传参

可以同时使用位置参数,和关键字参数的方式,但是关键字参数必须位于位置参数之后

(7)python 函数和lambda表达式

4.参数默认值

关键字参数还可以在定义函数时使用默认值

(7)python 函数和lambda表达式

定义时默认写了参数则调用时不必再写

(7)python 函数和lambda表达式

位置参数和关键字参数联合使用时,要把位置参数放在前面

(7)python 函数和lambda表达式

3、收集参数

1、在函数定义形参时,形参前加个*,在调用函数时就可以传入任意多个实参进去。

加了*的参数会作为元组来存放传入的数据

(7)python 函数和lambda表达式

2、当收集参数和关键字参数混用时就不能省略关键字参数了,而且能重新赋值

(7)python 函数和lambda表达式

可变参数可以在函数的任意位置,但只能有一个

3.定义函数时形参前加**,调用函数时,可以已a=b的方式传入

最后以字典的方式存放数据

(7)python 函数和lambda表达式

4.逆向参数收集

由序列传给函数,在由函数自动拆开序列的方式

(7)python 函数和lambda表达式

列表和元组用 *传入,字典用**传入

 5.函数的传递机制

如果传参是个字符串,函数外定义的字符串,在函数里重新赋值后外部是不变的

(7)python 函数和lambda表达式

但如果传参是一个列表则可以改变函数外的列表值

(7)python 函数和lambda表达式

????

6.变量作用域

7.函数变量

可以把函数赋值给变量来使用

(7)python 函数和lambda表达式

8.函数参数

可以把函数当做参数来传递

(7)python 函数和lambda表达式

9.使用函数作为返回值

三、lambda表达式

四、作用域

locals()

globals()