函数与变量的作用域

当python运行到并执行def语句时,函数就会被创建;函数的主体代码是在函数被调用的时候执行。
python 中的作用域:
L:local,局部作用域,即函数中定义的变量;
E:enclosing,嵌套有一个函数的该级函数的局部作用域,仍然属于局部作用域范畴。
G:global,全局变量,就是模块级别定义的变量,一个.py文件就是一个模块。
B:built-in,系统固定模块里面的变量,比如int, bytearray等。
用一个例子理解各个作用域:

X = int(1.0)    #X是内置作用域变量
Y = 99         #Y是全局变量
def func():   #func是全局变量
    Z = X + Y   #X是内置作用域变量,Y是局部变量,Z是嵌套有函数的上层函数的局部变量
    def add_1(b): #add_1是嵌套有函数的上层函数局部作用域变量,b是局部作用域变量
        return Z + b  
    return add_1

```python
x = 88
def func():
    x = 99
    print('局部变量:{}'.format(x))
func()
print('全局变量:{}'.format(x))

输出为:

局部变量:99
全局变量:88

global
可以在函数中将局部变量变为全局变量。

x = 88
def func():
    global x
    x = 99
    y = 100
    print('被修改为全局变量的x:{}'.format(x))
    print('局部变量:{}'.format(y))
func()
print('全局变量:{}'.format(x))
print('局部变量:{}'.format(y))

局部变量在函数返回时将会消失,但是全局变量不会,因此在调用函数结束后打印y的值会报错,而全局变量是我们通过global修改后的值。

在这里插入图片描述
上述两个函数使用了global,这时全局变量X的值由最后一个被调用的函数中定义的X的值确定。

具体而言:
全局变量
什么是全局变量?作用是什么?

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

作用:全局范围内都可以使用的变量
总结1:在函数外边定义的变量叫做 全局变量全局变量能够在所有的函数中进行访问

当函数内出现局部变量和全局变量相同名字时,函数内部中的 变量名 = 数据 此时理解为定义了一个局部变量,而不是修改全局变量的值

全局变量 与 局部变量的区别

定义

全局变量定义在函数外部
局部变量定义在函数内部
使用范围

全局变量可以在全局范围内使用。(函数内部、函数外部)
局部变量只能在定义变量的函数内部使用
修改

全局变量
函数外 可以任意修改
函数内 需要使用global 先声明之后,才能修改
局部变量
函数外 不能使用
函数内 可以任意修改

发布了22 篇原创文章 · 获赞 0 · 访问量 224

猜你喜欢

转载自blog.csdn.net/weixin_45734982/article/details/103543429