Python学习笔记(11)-局部变量、全局变量、返回值补充、参数补充、递归函数、匿名函数

局部变量

定义在函数中的变量叫做局部变量

作用范围:只能在函数中使用,函数外无法使用,如下两图:

图1:在函数内打印变量name,可以成功输出xiaoming

图2:在函数外打印变量name,提示变量name未定义

图1

图2

注意:形参也是局部变量

全局变量

定义在函数外的变量叫做全局变量

作用范围:在任何一个函数中均可以使用,但不可以修改值,如需修改需要在函数中声明变量(global 变量名),如下三图:

图1:在函数test1和test2分别打印变量name,均可成功输出xiaoming

图2:在函数test1中将变量name值更改为xiaohong,在函数test2中打印变量name,结果仍输出为xiaoming,全局变量name值未被修改

图3:在函数test1中加入声明变量global name,扔将变量name值更改为xiaohong,在函数test2中打印变量name,结果输出为xiaohong,全局变量name值被修改

图1

图2

图3

函数返回值补充

函数的返回值除了可以是数值和字符串外还可以是列表、元组、字典

如下三图:

图1:返回值是列表

图2:返回值是元组

图3:返回值是字典

图1

图2

图3

函数参数补充

缺省参数

带有默认值的参数叫做缺省参数

作用范围:缺省参数位置如果有值传入,使用所传入的值,如果没有值传入,则使用默认值,如下两图:

注意:缺省参数要写在参数列表的最后面

图1:缺省参数c位置没有值传入,则输出默认值100

图2:缺省参数c位置有值传入,则输出传入的值3

图1

图2

默认情况下传入的实参与形参顺序是一一对应的(第一个实参传给第一个形参),如果存在多个缺省参数,需要给指定的缺省参数传值,则在实参处指定缺省参数名字和传入的值,如图:

不定长参数

默认情况下传入实参的个数的与形参是一直的,如果想要不限制传入参数的个数,则使用不定长参数

表现形式:*args  **kwargs

说明:变量非必须使用args、kwargs,但是习惯是以这两个命名

*args

加上*的变量表示可以以元组的形式存放多个传入参数,如图:

**kwargs

加上**的变量表示可以以字典的方式存放多个命名参数(key=value),如图:

递归函数

函数在执行的时候调用函数自身,就叫做递归函数

如图:

应用场景:

计算1到100的阶乘(1*2*3*4.......*100)

 思路:1到100的阶乘可以看做100乘以1到99的阶乘的返回结果,1到99的阶乘可以看做99乘以1到98的阶乘返回结果,依次类推

注意:0乘以任何数都等于0,所以需要加上判断

匿名函数

如果一个函数的功能简单,可以省略def创建的标准步骤,使用匿名函数代替

表现形式:

定义:变量 = lambda   变量,变量(可以写无限多个变量):表达式

调用:变量(和表达式前变量个数相等的值,值与值之间用逗号隔开)

如图:

应用场景:将匿名函数当做函数的参数传递

说明:可以根据传入的匿名函数来计算任意两个数的加减乘除等

原文地址:https://www.cnblogs.com/lidongaistudy/p/9554558.html