sc-tbm 发表于 2021-6-6 14:56:46

def 区域变量和全局变量的问题

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

var = 520
fun(var)
print(var)

输出结果是 1314520 ,怎么得来的?

逃兵 发表于 2021-6-6 15:09:00

https://fishc.com.cn/forum.php?mod=viewthread&tid=191839&highlight=1314520

Twilight6 发表于 2021-6-6 15:11:34


因为先在全局空间定义了一个全局变量 var = 520

此时你调用定义的函数 func ,而 func 内对 var 进行重新赋值,会触发 Python 的屏蔽机制

暂时屏蔽 全局变量 var = 520 的值,在创建个局部变量 var 来接收此时的 1314 ,所以在函数此时调用 print 函数打印了 1314

出了函数后,局部变量 var 就被回收,而变回全局变量 var = 520 ,所以此时 print 打印了 var为 520

因为前者的 print 函数有 end 参数设置为空字符,所以之前的 1314 打印没有换行,则 520 在和 1314 同行出现

sc-tbm 发表于 2021-6-6 16:10:33

Twilight6 发表于 2021-6-6 15:11
因为先在全局空间定义了一个全局变量 var = 520

此时你调用定义的函数 func ,而 func 内对 var 进行 ...

多谢斑竹,很详细

Twilight6 发表于 2021-6-6 16:17:38

sc-tbm 发表于 2021-6-6 16:10
多谢斑竹,很详细

https://xxx.ilovefishc.com/forum/202005/27/132745rjvcvw1z2148jthd.gif
页: [1]
查看完整版本: def 区域变量和全局变量的问题