14.函数的提高

1.变量作用域

变量作用域 指的就是变量生效的范围,主要分为两类:局部变量全局变量

①局部变量

所谓 局部变量是定义在函数体内部的变量,就是在函数体内部生效。

 

 

 变量a是定义在testA函数内部的变量,在函数外部访问就会立马报错

局部变量的作用: 在函数内部,临时保存数据,就是当函数调用完成后,则销毁局部变量。

 

②全局变量

所谓全局变量,指的就是在函数体[内,外] 都可以生效的变量。

思考:

如果一个数据,在函数A和函数B中 都要使用怎么办?

答:使用全局变量

 

 

 

2.修改全局变量

思考:testB函数需求修改变量a的值为100,怎么书写程序?

怎么让局部变量 变成 全局变量?[使用global关键字:声明x是全局变量]

 

 

 可以从上图中看的,当我们调用函数B时,输出的是200,此时我们发现B函数调用的是局部变量

 

 

 

3.多函数执行流程

一般在实际开发过程中,一个程序往往由多个函数组成,并且多个函数共享某些数据,如下所示:

①共用 全局变量

 

 

 

 4. 返回值作为参数传递

返回值作为参数传递

 

 

 

 

 

 

4.1 函数的返回值(多个返回值)

需求:一个函数有两个返回值1和2

 

 

 那如果一个函数有多个返回值,该怎么写?

写法:

使用return a,b的写法,返回多个数据。默认是元组类型

return后面可以连接;列表,元组,字典,来返回多个值

 

 

 

 

 

 

 

5. 函数参数之位置参数

①.位置参数: 调用函数时,根据函数定义的参数位置来传递参数。

 

注意:传递和定义参数的顺序以及个数 必须一致。

 

②关键字参数

 函数调用,通过"键=值"得形式加以指定。

可以让函数更加清晰,容易使用,同时也清楚了参数的顺序需求。

 

注意:函数调用的时候,如果有位置参数的时候,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序

③缺省参数(默认参数)

 缺省参数也叫默认参数,用于定义函数,为参数提供默认值,调用函数的时候可不传这个默认参数的值(注意:所有位置参数必须出现在默认参数的前面,包括函数定义和调用)

 

注意:函数调用的时候,如果为缺省参数传值则修改默认参数值;否则使用这个默认值。

 ④不定长参数(可变参数)

不定长参数也叫可变参数。

用故意不确定调用的时候会传递多少个参数(不传参也可以)的场景。

此时,可用包裹(Packing)位置参数,或者包裹关键字参数,来进行参数传递,显得非常方便。

1.包裹位置传递

 

 

注意:传进的所有参数都会被args变量收集,他会根据传进参数的位置合并为一个元组(tuple)。args是元组类型,这就是包裹位置传递。

2.包裹关键字传递

 

 综上:无论是包裹位置传递,还是关键字传递,都是一个组包的过程。

 

6.拆包

①拆包:元组

把元组数据单独拆出两个变量

 

 

 

 

②拆包:字典

 

7.交换变量值

 需求: 有变量a = 10和b = 20,交换两个变量的值

①方法一

借助第三方变量存储数据

 

 

 

 方法二:

 

 

8. 引用

8.1 了解引用不可变类型

在python中,值是靠引用来传递来的。

我们可以用id()来判断两个变量是否为同一个值的引用

我们可以将id值理解为那块内存的地址标识。

 

 

 8.2 了解引用可变类型

 

 

9. 引用当做实参

 

 10. 可变和不可变类型

所谓可变类型与不可变类型: 是指数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变

❥ 可变类型:

  ①列表

  ②字典

  ③集合

❥ 不可变类型:

  ①整型

  ②浮点型

  ③字符串

  ④元组

posted @ 2022-05-14 15:10  岳墨  阅读(38)  评论(0编辑  收藏  举报