Python 名称空间和作用域】的更多相关文章

python名称空间和作用域 名称空间 名称空间:例如a=1000,python解释器会开辟一块新的内存来存贮1000这个变量值,然后会有一个a指向这个1000,那么a存在哪里?其实他和变量值差不多,内存中开辟了一块名称空间专门存储变量名. 1.内置名称空间 当python解释器启动,就将一些自带的变量名,放在了内置名称空间,而且作用范围是真正的全局 生命周期:python解释器启动生效,python解释器关闭失效 2.全局名称空间 除了内置和局部就是,全局名称空间 生命周期:在文件执行时生效,…
什么是名称空间? 比如下图的长方形代表内存,在这个内存里我要设置一个变量100,那么这个变量得有个门牌号,就叫他a吧,但其实变量不是这么存储的,他其实的存储方式是这样的,他会有一个名称空间,这个名称空间里面有一个表,他这个表里的内容是变量的名对应变量的内存地址这么一个关系,那么你定义一个变量b,那b也会有相应的内存地址,只要你定义变量,名称空间里就会多一组变量名对应他相应的内存地址,你定义以后,他会通过变量内存地址去找你相应的变量的值,他是这么存储的. 就是门牌号对应相应的内存地址. 对于这个表…
a = 10 # lst = [1,2,3,4] # # # 内置函数 print("你好啊,我叫赛利亚") # def chi(): a = 10 b = 20 # # # # 如果不调用chi() chi中的a和b都不会创建 # # 如果调用了chi() 会创建a,b chi() def chi(): a = 10 print(a) # chi() print(a) # 报错 def print(b): pass # a = 10 def chi(): print(a) # chi…
Python 的名称 Python 的名称(Name)是对象的一个标识(Identifier).我们知道,在 Python 里面一切皆对象,名称就是用来引用对象的.说得有点玄乎,我们以例子说明. 例如,在a = 2这个语句中,2是个存储在内存中的一个对象,名称a则会引用2这个对象,“引用”的含义是指可以通过名称a来使用2这个对象.我们可以使用id()函数来获取对象的地址. 可以看到,两都均指向同一个对象 Python 的名称与对象 起初,名称a引用对象2: 然后,执行操作a = 1,这时对象1被…
一 .函数对象 一 .函数是第一类对象,即函数可以当作数据传递 可以被引用 可以当作参数传递 返回值可以是函数 可以当作容器类型的元素 二. 利用该特性,优雅的取代多分支的if def foo(): print('foo') def bar(): print('bar') dic={ 'foo':foo, #foo是内存地址 'bar':bar, #bar是内存地址 } while True: choice=input('>>: ').strip() if choice in dic: dic…
复习 1. 字符串的比较: 2. 函数的参数:形参与实参 3. 实参的分类:位置实参与关键字实参 4. 形参分类: 1.无值位置形参 2.有值位置形参 3.可变长位置形参 4.有无值关键字形参 5.可变长关键字形参 5. 打散机制 今日内容 1. 函数默认值的细节.* 2. 数据类型的补充:语法简单,经常去使用就OK *** ----- 三元表达式  |  列表推导式  |  字典推导式 3. 函数对象:函数名的各种应用场景  ***** 4. 名称空间与作用域:解释变量名重复与从图冲突问题 …
一 函数对象 一 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 二 利用该特性,优雅的取代多分支的if def foo(): print('foo') def bar(): print('bar') dic={ 'foo':foo, 'bar':bar, } while True: choice=input('>>: ').strip() if choice in dic: dic[choice]()…
阅读目录 一 函数对象 二 函数嵌套 三 名称空间与作用域 四 闭包函数 五 装饰器 六 练习题 一 函数对象 1 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 2 利用该特性,优雅的取代多分支的if def foo(): print('foo') def bar(): print('bar') dic={ 'foo':foo, 'bar':bar, } while True: choice=input(…
复习 1.字符串的比较: -- 按照从左往右比较每一个字符,通过字符对应的ascii进行比较 2. 函数的参数 : 1)实参与形参:       -- 形参:在函数定义时()中出现的参数        -- 实参:在函数调用时()中出现的参数 2)实参的分类       -- 位置实参:给位置形参,必须按位置       -- 关键字实参:给位置与关键字形参,不需要按顺序 3)形参的分类      -- 无值位置      -- 有值位置      -- 可变长位置      -- 有无值关键字…
最开始对名称空间的了解是在学习函数的时候,那时候知道了作用域的查找顺序,以及全局名称空间和局部名称空间,产生疑惑的时候为学递归的时候,那时候还没有名称空间这个概念,只知道递归有个最大深度,那时候以后递归产生的名称空间是一层套一层的,以及类里面的名称空间,所以产生了深究名称空间的想法,这才诞生了这篇博客,本篇博客借鉴了python的命名空间的内容,本人对里面的例子都试验了并发现了一个错误,在类中定义的列表生成式产生的命名空间也可以访问到类属性. 例子 # a.py lis = ['musibii'…