从品牌网站建设到网络营销策划,从策略到执行的一站式服务
''' 命名空间 : 每次在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'] '''
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图