鱼C论坛

 找回密码
 立即注册
查看: 1055|回复: 5

[已解决]小甲鱼书里的内嵌函数问题

[复制链接]
发表于 2020-6-19 16:33:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
x = 520
def fun1():
x = 88
def fun2():
        x = 11
        print(x)
fun2()         这里为什么要打fun2()

fun1()
这里为什么程序会打印88?但是如果没有x=520的全局变量程序就会打印fun1()为88
感谢!
最佳答案
2020-6-19 16:54:59
你理解下 Python 的屏蔽机制就能理解这里为什么打印的结果不一

假设 有一个全局变量名为  var

当你在函数内创建一个局部变量,这个局部变量和全局变量同名时,即也为 var 时,就会触发Python 的屏蔽机制

在函数内部暂时屏蔽 全局变量 var 而重新创建一个局部变量 var 来暂时覆盖全局变量的 var,使得在函数内部时候

var 是指你后来创建的 局部变量 而不是 全局变量,当你运行一出了这个函数内的局部空间,也就是出了函数

这个局部变量 var 就不复存在,变会全局变量的  var

所以就会出现那样打印的结果,这里我用了颜色来标注了下  红色是全局变量,蓝色是局部变量
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-6-19 16:45:02 | 显示全部楼层
我是按照小甲鱼书上写的抄下来的 不太看得懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-19 16:45:49 | 显示全部楼层

我是按照小甲鱼书上抄下来的,我看不懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-31 04:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表