suger-coco 发表于 2020-5-25 15:13:27

求大佬帮帮我吧!!!

def fun(var):
    var = 1314
    print(var, end='')

var = 520
fun(var)
print(var)

请问各位大哥们,这个为什么会输出1314520呢?我一开始想的是打印520,求大佬解释

qiuyouzhi 发表于 2020-5-25 15:16:03

这个就是变量的作用域。
你在fun里面是无法改变var的,只能通过global。
函数里面定义的var是只属于函数的,函数打印完自己的var之后,就退出函数了,
然后你在外面打印了520,结果就是1314520.

Twilight6 发表于 2020-5-25 15:18:17

本帖最后由 Twilight6 于 2020-5-25 15:30 编辑

小甲鱼老师上课 小伙汁你没认真听讲了

这里函数外部的变量叫全局变量,当函数内部有个和函数外部变量名相同的变量,会启动' 屏蔽 ' 机制

函数内部会临时创建一个局部变量 来覆盖同名的全局变量,屏蔽函数外部的同名变量,一出该函数范围,局部变量就消失了,又变回原来的全局变量的值

沐羽尘 发表于 2020-5-25 15:37:37

一眼看下去还没明白前面几位大哥的意思{:10_250:}
你的代码执行
var = 520
fun(var)
print(var)
>>> fun(var)
1314
而>>> print(var)
520
因为前面定义 fun(var) 时 代码是print(var, end='')
end='' ,所以就连起来了显示了1314520 {:10_250:}

Twilight6 发表于 2020-5-25 15:40:39

沐羽尘 发表于 2020-5-25 15:37
一眼看下去还没明白前面几位大哥的意思
你的代码执行



噗 对哦 还漏了 end 参数没说...
页: [1]
查看完整版本: 求大佬帮帮我吧!!!