python基础:名称空间与作用域】的更多相关文章

最开始对名称空间的了解是在学习函数的时候,那时候知道了作用域的查找顺序,以及全局名称空间和局部名称空间,产生疑惑的时候为学递归的时候,那时候还没有名称空间这个概念,只知道递归有个最大深度,那时候以后递归产生的名称空间是一层套一层的,以及类里面的名称空间,所以产生了深究名称空间的想法,这才诞生了这篇博客,本篇博客借鉴了python的命名空间的内容,本人对里面的例子都试验了并发现了一个错误,在类中定义的列表生成式产生的命名空间也可以访问到类属性. 例子 # a.py lis = ['musibii'…
名称空间分为3种: 1. 全局名称空间 2. 内置名称空间 3. 局部名称空间(临时) 作用域 全局作用域              1全局名称空间 2 内置名称空间 局部作用域             1.局部名称空间 取值顺序     ----就近原则 局部名称空间 --------  全局名称空间   ---------- 内置名称空间     从小到大的原则进行进行查找, 如果在全局名称空间调用的值,那么他将会在全局名称和内置名称空间取值. 变量的加载顺序 内置空间变量 --------…
一.名称空间和作用域 1.全局名称空间(名称空间.命名空间): py文件运行时代码从上之下依次执行,看到一个变量就会将这个变量与对应值的内存地址的关系存到名称空间里,代码要运行时(print时)从名称空间里找变量与对应值的内存地址,通过内存地址找到对应的值. 2.局部名称空间(临时名称空间): 函数名放在内存地址里,当执行函数时,会在内存中开辟一个临时名称空间 ,存放函数体内的所有变量与值的关系.随着函数的执行完毕,临时空间自动关闭. 3.内置名称空间:所有的内置函数等存储的空间. 加载顺序:内…
一.命名空间概念 1.命名空间(name space) 名称空间是存放名字的地方. 若变量x=1,1存放在内存中,命名空间是存放名字x.x与1绑定关系的地方. 2.名称空间加载顺序 python test.py #1.python解释器先启动,因而首先加载的是:内置名称空间 #2.执行test.py文件,然后以文件为基础,加载全局名称空间 #3.在执行文件的过程中如果调用函数,则临时产生局部名称空间 3.名字的查找顺序 局部名称空间——>全局名称空间——>内置名称空间 需要注意的是:在全局无法…
一 名称空间 名称空间即存放名字与对象映射/绑定关系的地方. 对于x=3,Python会申请内存空间存放对象3,然后将名字x与3的绑定关系存放于名称空间中,del x表示清除该绑定关系. ​在程序执行期间最多会存在三种名称空间 1.1 内建名称空间 伴随python解释器的启动/关闭而产生/回收,因而是第一个被加载的名称空间,用来存放一些内置的名字,比如内建函数名 >>> max <built-in function max> #built-in内建 1.2 全局名称空间 伴…
阅读目录 一 函数对象 二 函数嵌套 三 名称空间与作用域 四 闭包函数 五 装饰器 六 练习题 一 函数对象 1 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 2 利用该特性,优雅的取代多分支的if def foo(): print('foo') def bar(): print('bar') dic={ 'foo':foo, 'bar':bar, } while True: choice=input(…
函数对象: 函数是第一类对象的含义是函数可以被当作数据处理 函数可用于: def func(): print(‘func’) 1.引用  f = func  把内存地址赋值给f 2.当作参数传给一个函数    def foo(func) 3.当作函数的返回值    return func 4.可以当作容器类型的元素                 l =[func,1,2] #函数嵌套的定义: def f1(): def f2(): def f3(): print('from f3') f3()…
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. 名称空间与作用域:解释变量名重复与从图冲突问题 …