时间:2021-05-22
局部变量
什么是局部变量
通俗定义:函数内部定义的变量就叫局部变量。
话不多说,代码如下:
def test1(): a = 300 # 定义一个局部变量a,并初始化300 print("--test1--修改前:a=%s" % a) a = 200 # 给变量a重新赋值200 print("--test1--修改后:a=%s" % a)def test2(): a = 400 # 定义另一个局部变量a,并初始化400 print("--test2--修改后:a=%s" % a)# 分别调用函数test1,test2test1()test2()输出:
--test1--修改前:a=300
--test1--修改后:a=200
--test2--修改后:a=400
结论:
全局变量
什么是全局变量
定义:如果一个变量既能在一个函数中使用,也可以在其他函数中使用,这样的变量就是全局变量。
代码如下:
a = 100 # 定义一个全局变量a,并初始化为100# 分别定义函数test1、test2,功能是打印变量a的值def test1(): print(a)def test2(): print(a)test1()test2()"""结果如下:100100"""如何修改全局变量的值
首先,我们可能是这样想的:
a = 100 # 定义一个全局变量a,并初始化为100# 分别定义函数test1、test2def test1(): print("修改前:a=%s"%a) a = 300 print("修改后:a=%s"%a)def test2(): print(2)test1()test2()"""结果如下:
UnboundLocalError: local variable 'a' referenced before assignment
异常解释:局部变量a在被引用前没有被定义
"""那我们把函数test1中的内容修改如下:def test1(): # print("修改前:a=%s"%a) a = 300 print("修改后:a=%s"%a)"""结果如下:修改后:a=300100"""这次我们发现,错误消失了,函数test2中打印变量a的值并没有改变还是100,这是为什么呢?
原因:如果一个全局变量在函数内被重新定义过,再在函数内使用变量则默认为局部变量;如果在函数内没有被定义,直接使用会被视为全局变量。
此时,函数test1中的只是定义了一个名字相同的局部变量而已,并没有改变全局变量的值。
global的使用
这前我们想的法子都不能修改全局变量的值,这下就该认识一个新的关键字global ,它的功能就是如果需要在函数内定义(修改)全局变量,则要先用global进行声明。
把之前的代码修改如下:
a = 100 # 定义一个全局变量a,并初始化为100# 分别定义函数test1、test2def test1(): global a # 声明函数中使用的a是全局变量 print("修改前:a=%s" % a) a = 300 print("修改后:a=%s" % a)def test2(): print(2)test1()test2()"""结果如下:修改前:a=100修改后:a=300300"""这下终于修改成功了。
可变类型与不可变类型的全局变量
发现我们之前定义的全局变量是数字类型,是属于不可变类型的,那么修改一个可变类型的全局变量有什么不同呢?
a = [100, 200] # 定义一个列表全局变量a# 分别定义函数test1、test2def test1(): print("修改前:a=%s" % a) a.append(300) print("修改后:a=%s" % a)def test2(): print(a)test1()test2()"""结果如下:修改前:a=[100, 200]修改后:a=[100, 200, 300][100, 200, 300]"""我们发现当全局变量为可变类型时,即使我们不是用global关键字声明全局变量,它还是会被修改。
事实上:
总结
以上所述是小编给大家介绍的python的局部变量和全局变量,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
C语言全局变量和局部变量详解核心内容:1、局部变量和全局变量变量按照作用域分为:全局变量和局部变量全局变量的作用域:从定义位置开始到下面整个程序结束。局部变量的
Python中的变量作用域一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量。全局变量所有作用域都可用,局部变量只能在本函数可用,变量的使用
在程序中设置的sum属于全局变量,而在函数中没有sum的定义,根据python访问局部变量和全局变量的规则:当搜索一个变量的时候,python先从局部作用域开始
前言学过编程的人应该对全局变量与局部变量这两个名词并不陌生,Python也同多数编程语言一样,也有全局变量与局部变量的概念但是与其他编程语言又有所不同全局变量与
C语言中局部变量和全局变量变量的存储类别(static,extern,auto,register)1.局部变量和全局变量在讨论函数的形参变量时曾经提到,形参变量