
Python基础——第九章 第二部分 函数作用域 全局变量global、局部变量nonlocal
发布日期:2021-05-08 21:02:46
浏览次数:15
分类:精选文章
本文共 1192 字,大约阅读时间需要 3 分钟。
在函数里面也有可以定义变量,那函数里面的变量名如果和函数外面的变量名重名,会相互影响吗?
1、作用域
1.1、外部不能访问函数内部变量
#外部不能访问内部变量x=10def func(): y=1func()print(x) '''执行结果:10'''print(y) '''执行结果:报错,提示'y'未被定义 这里仅输出了函数外部x的值'''
1.2、函数内部能够访问函数外部变量
x = 123def func(): print(x) return x + 1func()'''执行结果: 123'''
1.3、函数内部不能修改外部变量
x = 123def func(): x = x + 1 return xfunc()'''UnboundLocalError: local variable 'x' referenced before assignment这里x被定义为局部变量,仅只用函数内部,所以报错'''
1.4、函数内部和函数外部变量相同,访问内部变量
x = 100print("执行结果:",x, id(x))def func(): x = 999 print("执行结果:",x, id(x)) x += 1 return xa = func()print("执行结果:",a,id(a))'''执行结果: 100 8791370633984执行结果: 999 38956016执行结果: 1000 38955984'''
#当函数外部变量(全局变量)和函数内部变量(局部变量)相同时,函数内部变量可以使用外部变量,但不可修改外部变量
#函数内部的变量,作用域只在函数内部,函数内部不可以直接更改函数外部的变量
这里提出一个问题,如果想要去修改外部变量呢?
2、golbal和nonlocal
2.1、golbal全局变量
函数内部如果需要改变全局变量,就需要使用global修饰变量
x = 100 #全局变量print("执行结果:",x)def func(): global x #将局部变量修改成全局变量 x += 1 return xa = func()print("执行结果:",a)'''执行结果: 100执行结果: 101'''
2.2、nonlocal局部变量
在函数嵌套函数的情况下,同样也有函数作用域的问题,但是python3中提供了方便,只需要使用nonlocal就可以在里层函数内部修改外部函数变量
x=11 #全局变量def func(): x=99 #局部变量 def func2(): nonlocal x #将内层局部变量变成成外层局部变量 x+=1 return x return func2()print("执行结果:",func())
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2025年03月29日 22时55分47秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
jackson学习之八:常用方法注解
2021-05-09
Web应用程序并发问题处理的一点小经验
2021-05-09
asp.net core的授权过滤器中获取action上的Attribute
2021-05-09
entity framework core在独立类库下执行迁移操作
2021-05-09
Asp.Net Core 2.1+的视图缓存(响应缓存)
2021-05-09
服务器开发- Asp.Net Core中的websocket,并封装一个简单的中间件
2021-05-09
没花一分钱的我竟然收到的JetBrains IDEA官方免费赠送一年的Licence
2021-05-09
Redis 集合统计(HyperLogLog)
2021-05-09
RE套路 - 关于pyinstaller打包文件的复原
2021-05-09
【wp】HWS计划2021硬件安全冬令营线上选拔赛
2021-05-09
Ef+T4模板实现代码快速生成器
2021-05-09
dll详解
2021-05-09
c++ static笔记
2021-05-09
C++中头文件相互包含与前置声明
2021-05-09
JQuery选择器
2021-05-09
MVC中在一个视图中,怎么加载另外一个视图?
2021-05-09
SQL--存储过程
2021-05-09
MVC学习系列5--Layout布局页和RenderSection的使用
2021-05-09
MVC学习系列13--验证系列之Remote Validation
2021-05-09
多线程之volatile关键字
2021-05-09