Python名称空间和闭包】的更多相关文章

一.名称空间 1.定义:又名 name space,顾名思义,就是存放名字的地方.比如:若变量x = 1,1存放在内存中, 而名称空间正是存放名字x与1绑定关系的地方. 2.分类: locals : 函数内的名称空间,包括局部变量和形参 globals: 全局变量 builtins:内置模块的名字空间 注意:不同变量的作用域就是由这个变量所在的命名空间决定的. 3.作用域(范围) 全局范围:全局有效 局部范围:局部有效 查看作用域方法:globals(),locals() 4.作用域的查找顺序:…
python名称空间和作用域 名称空间 名称空间:例如a=1000,python解释器会开辟一块新的内存来存贮1000这个变量值,然后会有一个a指向这个1000,那么a存在哪里?其实他和变量值差不多,内存中开辟了一块名称空间专门存储变量名. 1.内置名称空间 当python解释器启动,就将一些自带的变量名,放在了内置名称空间,而且作用范围是真正的全局 生命周期:python解释器启动生效,python解释器关闭失效 2.全局名称空间 除了内置和局部就是,全局名称空间 生命周期:在文件执行时生效,…
python名称空间介绍 名称空间 python 中名称空间分三种: 内置名称空间 全局名称空间 局部名称空间 内置名称空间: 原码里面的一些函数都是存在这个内存空间中,任何模块均可访问它,它存放着内置的函数和异常 全局名称空间: 当程序运行时,代码从上之下一次执行,他会将变量与值的关系存储在一个空间中,这个空间叫做全局名称空间(名称空间,命名空间). 名称空间里面存的东西是,变量名与变量的内存地址的对应关系. ————(存的内容如:neame --> 13265654 一个对应关系) 当程序遇…
什么是名称空间? 比如下图的长方形代表内存,在这个内存里我要设置一个变量100,那么这个变量得有个门牌号,就叫他a吧,但其实变量不是这么存储的,他其实的存储方式是这样的,他会有一个名称空间,这个名称空间里面有一个表,他这个表里的内容是变量的名对应变量的内存地址这么一个关系,那么你定义一个变量b,那b也会有相应的内存地址,只要你定义变量,名称空间里就会多一组变量名对应他相应的内存地址,你定义以后,他会通过变量内存地址去找你相应的变量的值,他是这么存储的. 就是门牌号对应相应的内存地址. 对于这个表…
''' 一: 名称空间namespaces     名称空间就是存放名字与值绑定关系的内存空间 二: 名称空间分为三种     内置名称空间:         1. 特点: 存放是python解释器自带的名字,len,print         2. 生命周期: 解释器启动则产生,解释器关闭则销毁     全局名称空间         1. 特点: 存放是全局的名字(没有任何缩进\顶头定义的名字)         x=10         y=20         def func():    …
Python 的名称 Python 的名称(Name)是对象的一个标识(Identifier).我们知道,在 Python 里面一切皆对象,名称就是用来引用对象的.说得有点玄乎,我们以例子说明. 例如,在a = 2这个语句中,2是个存储在内存中的一个对象,名称a则会引用2这个对象,“引用”的含义是指可以通过名称a来使用2这个对象.我们可以使用id()函数来获取对象的地址. 可以看到,两都均指向同一个对象 Python 的名称与对象 起初,名称a引用对象2: 然后,执行操作a = 1,这时对象1被…
Day11 1.函数对象: ①可以被引用 ​ ②可以作为另一个函数的参数 ​ ③可以作为另一个函数的返回值0 ​ ④可以被存储到容器类型中 2.函数嵌套: ①嵌套调用:在一个函数中调用了另一个函数 ​ ②嵌套定义:在一个函数内定义了另一个函数 ​ 特点:定义在函数内的函数只能在函数内使用,外界不能直接访问 3.名称空间:存储名字与内存地址对应关系的空间 ​存储名称的空间,名称空间中,名字与内存地址一一对应 内置名称空间:解释器自带的名称与值的对应关系 python解释器启动的时创建,关闭pyth…
day11 python   一.三元运算符 def func(a, b):     return a if a > b else b   print(func(44,66))     二:函数注释 def func(a, b):     '''     这个函数是用来计算a和b的和     :param a: 第一个数据     :param b: 第二个数据     :return: 返回的是两个数的和     '''     return a + b   print(func.__doc_…
函数嵌套 按照函数的两个阶段分为: 嵌套调用:在一个函数内部调用另一个函数 嵌套定义:在一个函数内部定义另一个函数 名称空间(namespace):存储名字的内存区域 名称空间的分类: 内置名称空间:存的是解释器自带的名称 全局名称空间:只要是顶着最左边写的,没有任何缩进,就在全局名称空间中 注意在if中如果if是顶着最左边的没有缩进,那么if里面的名字也在全局名称空间中,while,for with同样如此 局部名称空间:存的是函数内定义的名字 名称空间的加载顺序 内置  -->  全局  -…
名称空间: 内置空间:python解释器自带的一块空间 全局空间:py文件中顶格写的就是全局空间 局部空间:函数体中就是局部空间 加载顺序: 内置空间 全局空间 局部空间 # def func(): # a = 1 # print(a) # func() 取值顺序: 局部空间 全局空间 内置空间 a = 10 def func() print(a) func() 作用域: 全局作用域:全局+内置 局部作用域:局部 函数的嵌套 ​ 不管在什么位置,只要是函数名()就是在调用一个函数. # 混合嵌套…
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的命名空间的内容,本人对里面的例子都试验了并发现了一个错误,在类中定义的列表生成式产生的命名空间也可以访问到类属性. 例子 # a.py lis = ['musibii'…
本篇目录: 一.函数嵌套 二.函数名称空间与作用域 三.函数对象 四.闭包函数 ============================================================================== 一.函数嵌套 1. 函数的嵌套调用 函数内又调用了其他函数(函数平级) def max(x,y): return x if x > y else y def max4(a,b,c,d): res1=max(a,b) res2=max(res1,c) res3=m…
一.函数对象  函数名就是存放了函数的内存地址,存放了内存地址的变量都是对象,即 函数名 就是 函数对象  函数对象的应用 1. 可以直接被引用  fn = cp_fn 2 .可以当作函数参数传递 computed(cp_fn, 100, 20) 3. 可以作为函数的返回值  get_cp_fn(cmd): return add 4. 可以作为容器类型的元素  method_map: 对应关系中的值 函数名存放的就是函数的地址,所以函数名也是对象,称之为函数对象 a= def fn(): num…
目录 一 函数对象 二 函数的嵌套 三 名称空间和作用域 四 闭合函数 五 装饰器 一.函数对象 1.函数是第一类对象 #第一类对象的特性:# 可以被引用 # 可以当做参数传递 # 返回值是函数 # 可以当做容器类型的元素 # def func(): # print('from func') #可以被引用 # f=func() #可以被当做参数 # def bar(x): # print(x)#func内存地址 # x() # bar(func) #当做返回值 # def bar(x):#x=f…
一.命名空间概念 1.命名空间(name space) 名称空间是存放名字的地方. 若变量x=1,1存放在内存中,命名空间是存放名字x.x与1绑定关系的地方. 2.名称空间加载顺序 python test.py #1.python解释器先启动,因而首先加载的是:内置名称空间 #2.执行test.py文件,然后以文件为基础,加载全局名称空间 #3.在执行文件的过程中如果调用函数,则临时产生局部名称空间 3.名字的查找顺序 局部名称空间——>全局名称空间——>内置名称空间 需要注意的是:在全局无法…
今日内容: 1. 函数对象 函数是第一类对象: 指的是函数名指向的值可以被当中数据去使用 1.可以被引用 2.可以当做参数传给另一个函数 3.可以当做一个函数的返回值 4.可以当做容器类型的元素 2. 函数嵌套 函数嵌套分为两大类: 1.函数的嵌套调用: 在调用一个函数过程中,其内部代码又调用了其他函数 2.函数的嵌套定义: 一个函数内部又定义了另一个函数 3.名称空间与作用域(******) 1.什么是名称空间namespaces: 名称空间就是用来存放名字与值内存地址绑定关系的地方(内存空间…
函数对象 # 函数名就是存放了函数的内存地址,存放了内存地址的变量都是对象,即 函数名 就是 函数对象​# 函数对应的原因# 1 可以直接被引用# 2 可以当作函数参数传递# 3 可以作为函数的返回值# 4 可以作为容器类型的元素 名称空间 # 名称空间:存放名字与内存空间地址对应关系的容器# 作用:解决由于名字有限,导致名字重复发送冲突的问题​# 三种名称空间# Built-in:内置名称空间:系统级,一个:随解释器执行而产生,解释器停止而销毁# Global:全局名称空间:文件级,多个:随所…
今天的内容整理共有5部分 一.命名关键字参数 二.函数对象 三.函数的嵌套 四.名称空间与作用域 五.闭包函数 一.命名关键字参数 # 命名关键字参数: 在定义函数时,*与**之间参数称之为命名关键字参数 # 特点: # 在调用函数时,命名关键字参数必须按照key=value的形式传值 # # def func(x,*,y=1,z): # print(x) # print(y) # print(z) # # func(1,z=2) def func(a,b=2,*args,c,**kwargs)…
一.命名空间概念 命名空间(name space),若变量x=1,1存放在内存中,命名空间是存放名字x.x与1绑定关系的地方.命名空间分三种: locals:函数内的名称空间,包括局部变量和形参 globals:全局变量,函数定义所在模块的名字空间 builtins:内置模块的名字空间 dir(__builtins__)查看所有内置方法 作用域:python中一个函数就是一个作用域,局部变量放置在其作用域中:代码定义完成后,作用域已经完成,作用域链向上查找 C# Java中作用域{} 不同变量的…
一 .函数对象 一 .函数是第一类对象,即函数可以当作数据传递 可以被引用 可以当作参数传递 返回值可以是函数 可以当作容器类型的元素 二. 利用该特性,优雅的取代多分支的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…
一.函数的对象 函数是第一类对象,指的是函数名指向的值(函数)可以被当作数据去使用 def func():# func=函数的内地址 print('from func') print(func) age=10 #1. 可以被引用 x=age print(x,age) f=func print(f) f() #2. 可以当作参数传给另外一个函数 def bar(x): print(x) bar(age) bar(func) #3. 可以当作一个函数的返回值 def bar(x): return x…
一 函数对象 一 函数是第一类对象,即函数可以当作数据传递 #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 可以直接被引用 fn = cp_fn # 2 可以当作函数参数传递 computed(cp_fn, 100, 20) # 3 可以作为函数的返回值 get_cp_fn(cmd): return add # 4 可以作为容器类型的元素 method_map: 对应关系中的值 def add(a, b): return a + b def low(a, b):t r…
阅读目录 一 函数对象 二 函数嵌套 三 名称空间与作用域 四 闭包函数 五 装饰器 六 练习题 一 函数对象 1 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 2 利用该特性,优雅的取代多分支的if def foo(): print('foo') def bar(): print('bar') dic={ 'foo':foo, 'bar':bar, } while True: choice=input(…
一.函数对象: 定义:函数对象就是函数名,函数名就是存放了函数的内存地址,存放了内存地址的变量就是对象 函数对象的应用: 可以直接被引用:(fn = cp_fn) 可以当做参数传递传递: computed(cp_fn,a,b) 可以当做函数的返回值 :   return add 可以作为容器类型的元素 :method_map 字典里的对应关系 综合案例: def add(a, b): return a + b def low(a, b): return a - b def jump(a, b):…
一 函数是第一类对象,即函数可以当作数据传递 1 可以被引用 2 可以当作参数传递 3 返回值可以是函数 3 可以当作容器类型的元素 def foo(): return len f = foo print(foo) [foo, ] 函数嵌套(把大问题细分成小问题,把小问题平道一起解决) 函数的嵌套定义: 在函数内部又定义了其他函数 函数的嵌套调用:在一个函数内部又调用其他函数 2.名称空间与作用域: 什么是名称空间? 名称空间:存放名字的地方,三种名称空间, (之前遗留的问题x=1,1存放于内存…
今日内容 1.函数对象 2.名称空间与作用域 3.函数的嵌套调用与闭包 4.装饰器 一.函数对象 1.1 定义 函数名存放的就是函数地址,所以函数名也就是对象,称之为函数对象 1.2 函数对象的应用 1.可以直接被引用 2.可以当作函数参数传数 3.可以作为函数的返回值 4.可以作为容器类型的元素 def fn(): num = 10 print('fn function run') # 直接被引用 func = fn fn() func() 案例:四则运算 def add(n1, n2): r…
一 函数对象 一 函数是第一类对象,即函数可以当作数据传递 #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.函数嵌套 #函数的镶套调用:在调用一个函数的过程中,又调用其他函数 def max2(x,y): if x > y: return x else: return y def max4(a,b,c,d): res1=max2(a,b) res2=max2(res1,c) res3=max2(res2,d) return res3 print(max4(1,2,3,-1)) #函数的嵌套定义:在一个函数的内部又定义了另一个函数 def f2(): print('from f2') def f1(…