美文网首页
Day031|变量名字一样,为何是独立的不同的变量?

Day031|变量名字一样,为何是独立的不同的变量?

作者: 龙渊的宝藏 | 来源:发表于2021-03-26 22:33 被阅读0次

    今天是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!

    向上向善,日进一步!

    每天学习,努力成长!

    定个小目标,开启成长的旅程,遇见更好的自己。

    这是我们和自己的约定,许诺自己不负韶华。

    路虽远,行则将至;事虽难,做则必成。

    成长的最好时机,就是当下。

    相关文章

      网友评论

          本文标题:Day031|变量名字一样,为何是独立的不同的变量?

          本文链接:https://www.haomeiwen.com/subject/cydkhltx.html