当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 先声明之后,才能修改
局部变量
函数外 不能使用
函数内 可以任意修改