说说 Python 的作用域
发布日期:2021-06-29 21:14:27
浏览次数:2
分类:技术文章
本文共 900 字,大约阅读时间需要 3 分钟。
在函数内定义的变量,在函数的 “局部作用域” 中;而在函数外定义的变量,在 “全局作用域” 中。
在程序启动时,会创建一个全局作用域。当程序终止时,就会销毁这个作用域,其内部保存的变量也会被一同销毁。
一个函数被调用时,会创建一个局部作用域。当这个函数返回时,这个作用域就会被销毁。
1 全局作用域内,不能使用局部变量
全局作用域内如果使用了局部变量,就会抛错:
def cook(): dumplings = 3cook()print(dumplings)
运行结果:
NameError: name ‘dumplings’ is not defined
因为 cook() 返回后,其局部作用域中的 dumplings 变量也被一同销毁了,所以在全局作用域内无法访问。
2 局部作用域内,不能使用其它局部作用域内的变量
def dumpling(): dumplings = 5 print('dumpling()=' + str(dumplings))def cook(): dumplings = 3 dumpling() print('cook()=' + str(dumplings))cook()
运行结果:
dumpling()=5
cook()=3
cook() 中调用了 dumpling(),因此其同名的 dumplings 变量被重新定义了。也就是说,一个函数内定义的局部变量与其它函数内部定义的变量,是完全隔离的。
另外,这个示例也说明了:不同作用域中的变量,可以同名。但不建议这样做,因为变量名相同,我们不好跟踪代码。
3 局部作用域内,可以使用全局变量
def cook2(): print(dumplings)dumplings = 3cook2()
运行结果:
3
总的来说,作用域与变量遵守以下规则:
- 全局作用域中的代码,无法使用局部作用域中定义的变量。
- 局部作用域可以使用局部作用域中的定义的变量。
- 一个函数局部作用域中,无法使用其它局部作用域中的变量。
- 变量如果分别定义在不同的作用域中,那么可以同名(不建议这样做)。
转载地址:https://deniro.blog.csdn.net/article/details/99200150 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月17日 01时17分19秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
如何去除百度地图、高德地图api的logo和版本信息
2019-04-30
javascript 如何将字符串时间转换为毫秒数进行比较
2019-04-30
纯CSS实现分栏宽度拉伸调整
2019-04-30
Table表格的一些记录
2019-04-30
li相关整理:如何改变li前面点的颜色和如何去掉li的点
2019-04-30
ElementUI form表单 左侧label对齐注意事项
2019-04-30
高德地图开发自定义地图样式
2019-04-30
cron表达式整理--1
2019-04-30
vue学习笔记之vue深入响应式原理
2019-04-30
vue学习笔记之路由(Vue Router)安装
2019-04-30
vue学习笔记之路由起步实例
2019-04-30
vue学习笔记之动态路由匹配
2019-04-30
Vue学习笔记之嵌套路由
2019-04-30
Vue学习笔记之路由编程式的导航
2019-04-30
Vue学习笔记之命名路由
2019-04-30
Vue学习笔记之路由命名视图
2019-04-30
Vue学习笔记之路由的重定向和别名
2019-04-30
Vue学习笔记之路由组件传参
2019-04-30
Vue学习笔记之路由导航守卫
2019-04-30