Python 全局变量和局部变量

这篇文章主要介绍了Python 全局变量和局部变量,命名空间的概念的提出是为了划分和控制变量是否可见,以及生存周期的长短;命名空间的作用范围叫做作用域更多详细内容需要的小伙伴可以参考一下

1、命名空间

命名空间的概念的提出是为了划分和控制变量是否可见,以及生存周期的长短;命名空间的作用范围叫做作用域。
划分一块区域保存所有数据,以字典的方式存储(变量与值形成映射关系)。一共三种。

内建命名空间:
解释器启动时创建,直到解释器运行结束,生存周期最长;
全局命名空间:
文件运行时创建,直到解释器运行结束,生存周期较长;
局部命名空间:
数调用时,里面的局部变量才创建,调用结束后即释放,生存周期较短;
创建和销毁顺序
创建顺序:
python解释器启动->创建内建命名空间->创建全局命名空间->创建局部命名空间
销毁顺序:
函数调用结束后->销毁函数对应的局部命名空间数据->销毁全局命名空间数据->销毁内建命名空间数据

2、全局变量和局部变量

什么是全局和局部变量:

局部变量就是在函数内部定义的变量,局部变量所在的就是局部命名空间,作用域仅仅在函数内部可见,也就是说只能在函数内部使用。

1

2

3

4

5

6

# 在函数中创建的变量就是局部变量

def func():

   var = '局部变量'

# 局部变量不可以在非对应局部环境中使用

print(var)  # error, 该变量不存在

全局变量就是在函数外部定义的或者使用​​global​​在函数内部定义的变量,全局变量所在的命名空间就是全局命名空间,作用域横跨整个文件,就是说在整个文件中的任何一个地方都可以使用全局变量。

1

2

3

4

5

6

7

8

# 在全局环境中创建的变量就是全局变量

var = '全局变量'

def func():

    # 在局部中也可以使用全局变量

    print(var)  # 全局变量

func()

局部变量最好不要和全局变量同名,如果同名,在局部环境中就无法使用全局变量了。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

var = '全局变量'

def func():

    # 先使用了全局变量

    print(var)  # error, 找不到该变量

        # 然后局部变量和全局变量同名,那么新的局部变量就会在局部空间中覆盖了全局变量的一切影响力,这就叫做局部变量修改了全局变量;

    # 这样的话导致在局部空间中无法在使用该全局变量,之前在局部空间中使用的该变量就成为了先调用后定义;导致出错。

    var = '局部变量'

    print(var)

func()

# 但是局部同名变量不会影响到全局变量的值

print(var)  # 全局变量

内置函数就是内建命名空间,指的是那些python中自带的、内置的函数。

来源:https://www.weidianyuedu.com

你可能感兴趣的:(编程语言,Python,python,开发语言)