Python学习笔记(十八)

局部变量的生命周期

所谓生命周期就是变量从被创建到被系统回收的过程

局部变量在函数执行时才会被创建

函数执行结束后,局部变量被系统回收

局部变量在生命周期内,可以用来存储函数内部临时使用的数据

 

不同的函数,可以定义相同名字的局部变量,且彼此之间不会产生影响

 

全局变量

全局变量是在函数外部定义的变量,所有函数内部都可以使用这变量

注意:在函数执行时,需要处理变量时,会:

1、首先查找函数内部是否存在指定名称的局部变量,如果有,则直接使用

2、如果没有,查找函数外部是否存在指定名称的全局变量,如果有,直接使用

3、如果还没有,程序报错

 

函数不能直接修改全局变量的引用

在函数内部,可以通过全局变量的引用获取对应的数据

但是,不允许直接修改全局变量的引用--使用赋值语句修改全局变量的值

 

在函数内部修改全局变量的值

如果在函数中需要修改全局变量,需要使用global使用声明

 

注意:

全局变量是在调用函数之后定义的,由于执行逻辑顺序是从上到下,在执行函数的时候,变量还没有定义,

所以程序会报错

 

代码结构示意图如下

shebang

import模块

全局变量

函数定义

执行代码

 

全局变量命名的建议

为了避免局部变量和全局变量出现混淆,在定义全局变量时,有些公司会有一些开发要求,例如:

全局变量名前应该增加g_或者gl_的前缀

 

提示:具体的要求格式,各公司要求可能会有些差异

 

函数参数和返回值的作用

函数根据有没有参数以及有没有返回值,可以相互组合,一共有4种组合模式

1、无参数,无返回

2、无参数,有返回

3、有参数,无返回

4、有参数,有返回

 

定义函数时,是否接收参数,或者是否返回结果,是根据实际的功能需求来决定的

1、如果函数内部处理的数据不确定,就可以将外界的数据以参数传递到函数内部

2、如果希望一个函数执行完成后,向外界汇报执行结果,就可以增加函数的返回值

 

函数的返回值 进阶

在程序开发中,有时候,会希望一个函数执行结束后,告诉调用者一个结果,以便调用者针对具体的结果做后续的处理

返回值是函数完成工作后,最后给调用者的一个结果

在函数中使用return关键字可以返回结果

调用函数一方,可以使用变量来接收函数的返回结果

 

面试题:

交换两个数字

题目要求:

1、有两个整数变量a=6,b=100

2、不使用其他变量,交换两个变量的值

 

解法1  - 使用加减法:

a = a + b

b = a - b

a = a - b

 

解法2 - Python专有,利用元祖:

a,b = b , a

 

函数的参数 进阶

问题1:

在函数内部,针对参数使用赋值语句,会不会影响调用函数时传递的实参变量?

 

答:不会!

不可变和可变的参数

无论是传递的参数是可变还是不可变

只要针对参数使用赋值预计,会在函数内部修改局部变量的引用,不会影响外部变量的引用

 

问题2:

如果传递的参数是可变类型,在函数内部,使用方法修改了数据的内容,同样会影响到外部的数据

 

面试题: --- +=

在Python中,列表变量调用+=本质上是在执行变量的extend方法,不会修改变量的引用

 

缺省参数

定义函数时,可以给某个参数指定一个默认值,具有默认值的参数就叫做缺省参数

调用函数时,如果没有传入缺省参数的值,则在函数内部定义函数时指定的参数默认值

函数的缺省参数,将常见的值设置为参数的缺省值,从而简化函数的调用

 

posted @ 2022-05-25 11:46  黑羽青衣  阅读(18)  评论(0编辑  收藏  举报