Python之全局与局部变量
admin
2023-07-09 11:43:32
0次
'''
命名空间 : 每次在python解释器启动之后,就会在内存开辟一块内存空间,每当遇到一个变量时,就会在命名空间中,记录下变量名和值之间的关系,也即记录变量对应的值在内存空间中的
           地址;当一个函数时,会在命名空间中记录下函数名以及函数的地址;
内置命名空间 : 解释器启动伊始开辟声明内置函数的内存空间;
局部命名空间 : 在函数内部,为变量或函数开辟的命名空间;
作用域 : 函数或变量的生命周期;
查看全局作用域中的所有内容 : globals()
查看局部作用域中的所有内容 : locals()
函数的嵌套 : 也即支持在一个函数内部可以定义另一个函数
慎用 :
    当需要在局部作用域内,对全局变量进行操作时,需以global关键字声明,要直接对全局变量进行操作,这里的全局,包括绝对全局和相对全局,也即可以对所有大于当前作用域的所有
    作用域内的所有变量进行声明
    当需要对大于当前作用域,但又并非全局作用域内的变量进行操作时,需以nonlocal关键字声明该变量;
重点(神坑) : 定义函数时,在同一个代码块内,多次调用同一个函数,默认值参数对应的内存空间始终不变,对默认值参数进行修改也始终是在默认值参数对应内存空间上进行修改;
    案例(从指针的角度理解) :
    def test(value, lst = []) :
    lst.append(value)
    print(lst)
    return lst
    lst1 = test("a")    #第一次调用test函数,在lst所在内存空间写入值a,打印a,并返回lst的地址
    lst2 = test("b", [])    #第二次调用test函数,由于我们这次没有使用lst的默认值,而是手动赋值,因此会为lst形参开辟一块新的内存空间,并写入值b,打印b,
                             返回新开辟的内存空间的地址;
    lst3 = test("c")    #第三次调用test函数,由于再次使用了lst的默认值,所以会在lst默认开辟的内存空间内写入c,也即["a", "c"],打印["a", "c"],并返回其地址;
    print(lst1)     #lst1接收到的为test函数为lst默认开辟的内存空间的地址,而默认的内存空间存的是["a", "c"],因此打印结果为["a", "c"]
    print(lst2)     #lst2接收的是为实参新开辟的内存空间的地址,存的值为["b"],因此打印结果为["b"]
    print(lst3)     #lst2接收到的为为默认形参lst开辟的内存空间的地址,存的值为["a", "c"],因此打印结果为["a", "c"]
    结果 :
   ['a']
   ['b']
   ['a', 'c']
   ['a', 'c']
   ['b']
   ['a', 'c']
'''


相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...