python:浅析变量
在学习局部变量和全局变量的时候,相信大家一定有过这种想法:函数内部为什么不能修改全局变量?今天咱们就一起来看看如何在函数中修改全局变量
一、变量
1、含义?
用于存储某种不确定的或者未知数据的容器叫做变量
2、作用?
我i想变量的作用无非就是:开辟内存空间然后保存数据
二、局部变量
1、含义
定义在函数内的变量叫做局部变量
2、作用域
只能在该函数范围内使用,也就是说在哪个函数中定义的,那么就只能在该函数中使用,在其他或者外界访问不到
3、生命周期
如果函数内部没有可执行的代码,或者说该函数内部已经没有对局部变量进行某种操作的代码,并且当该函数执行完毕时,局部变量就会被销毁,或者说被回收
# 定义的一个函数
def func():
# 在函数中定义的局部变量
i = 12
# 输出全局变量
print("局部变量:",i)
# 注意:在每次调用该函数的时候,都会去定义局部变量,那上次的局部变量去哪了?
# 上一次的局部变量在该函数执行完毕时已经释放内存回收了
三、全局变量
1、含义
定义在函数外部的变量叫做全局变量
2、作用域
只能在整个模块中访问或者使用,一个.py文件就是一个模块,在其他模块中访问不到
3、生命周期
当整个程序没有课执行的代码,或者说当整个程序执行完毕时,此时全局变量就要被销毁,或者说被回收
# 全局变量
x = 20
# 输出全局变量,输出20
print(x)
# 当整个程序执行完毕时,全局变量就会被释放内存,回收
四、在函数变量的执行流程
1、在函数中有局部变量就用局部变量
2、当无局部变量时使用全局变量
3、当局部变量和全局变量重名,函数会默认选择使用局部变量
# 定义一个函数
def func():
# 定义局部变量
i = 12
# 输出局部变量
print("局部变量:",i)
# 这里看上去是修改全局变量的值,实则是定义的局部变量
x = 1
# 这里输出的是局部变量,是1,这里就可以看到,函数会默认选择局部变量
print(x)
# 全局变量
x = 20
# 调用函数
func()
# 输出全局变量,输出20
print(x)
五、如何在局部变量中操作全局变量
# 当函数中没有与全局变量同名的局部变量时,在函数中是完全可以访问全局变量的,但是不能修改
# 那么如果想在函数中操作或者说修改使用全局变量,那么该怎么办?使用global关键字声明
# 定义了一个函数
def func():
# 使用global关键声明全局变量x,为什么说是声明?因为全局变量中已经有了x变量,那么此时就是声明,使用全局变量
# 如果说全局变量中没有x,那么此时就变成了声明并定义全局变量,并且在外界和其他函数中都可以访问
# 注意:global x = 10 这种写法是错误的,在程序中会直接报错
global x
# 修改了全局变量x
x = 10
# 输出10
print(x)
# 全局变量
x = 20
# 输出20
print(x)
# 调用函数
func()
# 输出10,因为在函数中已经修改了
print(x)
六、区别
说了这么多,是不是还有许多朋友不太清除呢?不过没关系,看了下面这个表格以后,我相信你会有很大的收获,并且理解什么时局部变量什么是全局变量
局部变量 | 全局变量 | |
---|---|---|
作用 | 开辟内存空间,存储数据 | 开辟内存空间,存储数据 |
定义 | 在函数内定义 | 在函数外定义 |
作用域 | 只能在该函数中使用 | 只能在该模块中使用 |
访问 | 函数内可以访问并修改该函数内的局部变量,但只能访问全局变量,不能修改,如果需要修改则需要使用global关键字 | 在函数外只能访问修改全局变量,不能访问和修改局部变量 |
生命周期 | 当该函数执行完毕时销毁并回收局部变量 | 当程序执行完毕时销毁并回收全局变量 |
以上均为自己在今天一天的学习中所学到的一些知识,并根据自己的理解所总结的一篇文章,如果本篇文章有什么不完善的地方,还请各位码友能够多多指教,同时也希望自己所学的东西能够帮助更多的朋友,谢谢!