说说 Python 的作用域
发布日期:2021-06-29 21:14:27
浏览次数:3
分类:技术文章
本文共 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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月23日 04时29分11秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
odoo14 rpc 链接报错 容易出错怎样解决
2019-04-30
python os 怎样使用 读取一个文件中所有图片的名称
2019-04-30
python 图片转化为base64
2019-04-30
小程序支付 xml拼接 和生成 sign签名 代码
2019-04-30
python pandas excle 把两列合并新的一列
2019-04-30
odoo 中 tree中的字段隐藏 排序等
2019-04-30
有道翻译 爬虫 讲解 和 代码
2019-04-30
编译和链接的过程
2019-04-30
Git学习(二):git-rev-parse命令初识
2019-04-30
vim字符串替换
2019-04-30
C语言:堆和栈的区别是什么?
2019-04-30
C语言:二级指针(指向指针的指针)详解
2019-04-30
C语言:断言assert函数完全攻略
2019-04-30
C语言:命令行选项解析函数---getopt()和getopt_long()
2019-04-30
C语言:inline,static inline
2019-04-30
Git学习(三):Git 撤销commit文件 和 回退push的文件
2019-04-30
WAV系列之一:G711编解码原理及代码实现
2019-04-30
WAV系列之二:ADPCM编解码原理及代码实现
2019-04-30