千家信息网

Python中变量的作用域实例分析

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇"Python中变量的作用域实例分析"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇
千家信息网最后更新 2026年11月03日Python中变量的作用域实例分析

这篇"Python中变量的作用域实例分析"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"Python中变量的作用域实例分析"文章吧。

1、作用于的概念

变量作用域指的是变量生效的范围,在Python中一共有两种作用域。

全局作用域

全局作用域在程序执行时创建,在程序执行结束时销毁。所有函数以外的区域都是全局作用域。在全局作用域中定义的变量,都属于全局变量,全局变量可以在程序的任意位置被访问。

函数作用域

函数作用域在函数调用时创建,在调用结束时销毁。函数每调用一次就会产生一个新的函数作用域(不调用不产生)。在函数作用域中定义的变量,都是局部变量,它只能在函数内部被访问。

2、局部变量

所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效。

def testA():    # 局部变量a    # 在函数中为变量赋值时,默认都是为局部变量赋值    # 局部变量不会影响函数外的变量。    a = 100    # 函数体内部访问,能访问到a变量    print(a)testA()  # 100print(a)  # 报错:name 'a' is not defined

变量a是定义在testA函数内部的变量,在函数外部访问则立即报错。

局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量。

3、全局变量

所谓全局变量,指的是在函数体内、外都能生效的变量。

思考:如果有一个数据,在函数A和函数B中都要使用,该怎么办?

答:将这个数据存储在一个全局变量里面。

# 定义全局变量aa = 100def testA():    print(a)  # 访问全局变量a,并打印变量a存储的数据def testB():    print(a)  # 访问全局变量a,并打印变量a存储的数据testA()  # 100testB()  # 100

思考:testB函数需求修改变量a的值为200,如何修改程序?

a = 100def testA():    print(a)def testB():    a = 200    print(a)testA()  # 100testB()  # 200print(f'全局变量a = {a}')  # 全局变量a = 100

思考:在testB函数内部的a = 200中的变量a是在修改全局变量a吗?

答:不是。观察上述代码发现,15行得到a的数据是100,仍然是定义全局变量a时候的值,而没有返回

testB函数内部的200。综上:testB函数内部的a = 200是定义了一个局部变量。

(1)global关键字

思考:如何在函数体内部修改全局变量?

a = 100def testA():    print(a)def testB():    # 想要修改全局变量a的值是200    # global 关键字声明a是全局变量    global a    a = 200    print(a)testA()  # 100testB()  # 200print(f'全局变量a = {a}')  # 全局变量a = 200

global关键字的作用是,在函数内部声明一个变量为全局变量。换句话说如果希望在函数内部修改全局变量,则需要使用global关键字来声明变量。

(2)总结

如果在函数里面直接把变量a=200赋值,此时的a不是全局变量的修改,而是相当于在函数内部声明了一个新的局部变量。函数体内部修改全局变量: 先global声明a为全局变量,然后再变量重新赋值。

4、变量的查找

当我们使用变量时,会优先在当前作用域中寻找该变量,如果有则使用,

如果没有则继续去上一级作用域中寻找,如果有则使用,

如果依然没有则继续去上一级作用域中寻找,以此类推。

直到找到全局作用域,依然没有找到,则会抛出异常 NameError: name 'a' is not defined。

# 练习说明a = 10def fn2():    def fn3():        a = 30        print('fn3中:','a =',a)    fn3()    print('fn2中:','a =',a)fn2()"""输出结果:fn3中: a = 30fn2中: a = 10"""

5、作用域中可变数据类型变量

c = 10def fn4(a):    # 在函数中对形参进行重新赋值,不会影响其他的变量    a = 20    print('a =', a, id(a))fn4(c)print('c =', c, id(c))"""输出结果:a = 20 8791349231264c = 10 8791349230944"""# 如果形参接收到的数据是一个全局列表# 当在函数内尝试修改列表中的元素时,全局列表的数据也会发生改变c = [1,2,3]def fn4(a):    # 如果形参执行的是一个对象,当我们通过形参去修改对象时    # 会影响到所有指向该对象的变量    a[0] = 100    print('a =', a, id(a))fn4(c)print('c =', c, id(c))"""输出结果:a = [100, 2, 3] 5132808c = [100, 2, 3] 5132808"""# 如果我们不向全局变量有所改动# 就需要使用我们之前学过的浅复制,# 或者传入一个切片,就可以解决c = [1, 2, 3]def fn4(a):    # 在函数中对形参进行重新赋值,不会影响其他的变量    a[0] = 100    print('a =', a, id(a))fn4(c.copy())# fn4(c[:])print('c =', c, id(c))"""输出结果:a = [100, 2, 3] 6050824c = [1, 2, 3] 6050312"""

6、多函数程序执行流程

一般在实际开发过程中,一个程序往往由多个函数组成,并且多个函数共享某些数据,如下所示:

(1)共用全局变量

# 1. 定义全局变量glo_num = 0def test1():    global glo_num    # 修改全局变量    glo_num = 100def test2():    # 调用test1函数中修改后的全局变量    print(glo_num)# 2. 调用test1函数,执行函数内部代码:声明和修改全局变量test1()# 3. 调用test2函数,执行函数内部代码:打印test2()  # 100

(2)返回值作为参数传递

# 先得到函数一的返回值,再把这个返回值传入到函数二def test1():    return 50def test2(num):    print(num)# 1. 保存函数test1的返回值result = test1()# 2.将函数返回值所在变量作为参数传递到test2函数test2(result)  # 50

以上就是关于"Python中变量的作用域实例分析"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。

变量 函数 全局 作用 局部 数据 程序 内容 形参 关键 关键字 结果 影响 输出 实例 实例分析 分析 代码 对象 存储 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云南咖啡 金融科技创新监管互联网金融 致骋互联网科技 融贸通互联网科技 互联网科技股有哪些 多迪互联网科技有限公司 深圳互联网科技怎么样 宁波青枫互联网科技有限公司 创业天下互联网科技有限公司 中国互联网有什么科技含量 贵州叶脉互联网科技有限公司所属行业 移动互联网科技公司 青海科技产业互联网发展 想开互联网科技公司怎么样 南通创西澳互联网科技有限公司 图游互联网科技 全球科技与互联网公司市值变化 互联网科技手机排行榜 互联网科技的前景 株洲百竞科技的互联网营销顾问 互联网金融 金融科技 万易互联网科技 恒生科技互联网指数分析 青海省互联网新科技 阿大互联网科技有限公司 互联网5g黑科技有哪些 恒生互联网科技指数跳水 兰石爱特工业互联网科技分公司 第三届互联网大会安防黑科技 互联网对科技影响
0