今天是Andy学Python的第31 天哦!
大家好,我是Andy。
之前写过一篇笔记,《Day025|全局变量与局部变量详解》,对全局变量与局部变量进行了简要归纳对比,今天在其他书中又发现了新的未掌握的知识点。下面跟大家一起学习下。
01.
局部作用域不能使用其他局部作用域内的变量
观察下图左右两个程序,预测各自的输出结果。
先
不
要
看
答
案
答案如下:
答案解析:
虽然eggs在spam()与bacon()起的名字一样,但是这是两个不同的变量。
重点是,一个函数的局部变量与其他函数的局部变量完全不一样,虽然起的名字可能一样、长得可能一模一样。
换句话:局部变量的内存是动态分配与释放:随函数的调用而生成,函数调用结束即释放。
02.
名称相同的局部变量和全局变量
def master1():
master = "局部张三"
print(master)
def master2():
master = "局部李四"
print(master)
master1()
print(master)
master = "全局王五"
master2()
print(master)
先不要看答案,猜猜输出结果。
答案解析:
# 虽然都是输出master,但是结果不一样。
# 第2行,名为master的变量,存在于master1()被调用时的局部范围。
# 第6行,名为master的变量,存在于master2()被调用时的局部作用范围。
# 第11行,名为master的变量,存在于全局范围。
# 这3个独立的变量都有相同的名字,但不是一回事。
结论:要想生活简单,就要避免局部变量与全局变量或其他局部变量同名。
不然,程序一旦长了,查错就变得非常麻烦。
51Day Day up!
向上向善,日进一步!
每天学习,努力成长!
定个小目标,开启成长的旅程,遇见更好的自己。
这是我们和自己的约定,许诺自己不负韶华。
路虽远,行则将至;事虽难,做则必成。
成长的最好时机,就是当下。
网友评论