day 12 名称空间和闭包函数】的更多相关文章

函数嵌套 按照函数的两个阶段分为: 嵌套调用:在一个函数内部调用另一个函数 嵌套定义:在一个函数内部定义另一个函数 名称空间(namespace):存储名字的内存区域 名称空间的分类: 内置名称空间:存的是解释器自带的名称 全局名称空间:只要是顶着最左边写的,没有任何缩进,就在全局名称空间中 注意在if中如果if是顶着最左边的没有缩进,那么if里面的名字也在全局名称空间中,while,for with同样如此 局部名称空间:存的是函数内定义的名字 名称空间的加载顺序 内置  -->  全局  -…
''' 一: 名称空间namespaces     名称空间就是存放名字与值绑定关系的内存空间 二: 名称空间分为三种     内置名称空间:         1. 特点: 存放是python解释器自带的名字,len,print         2. 生命周期: 解释器启动则产生,解释器关闭则销毁     全局名称空间         1. 特点: 存放是全局的名字(没有任何缩进\顶头定义的名字)         x=10         y=20         def func():    …
Day11 1.函数对象: ①可以被引用 ​ ②可以作为另一个函数的参数 ​ ③可以作为另一个函数的返回值0 ​ ④可以被存储到容器类型中 2.函数嵌套: ①嵌套调用:在一个函数中调用了另一个函数 ​ ②嵌套定义:在一个函数内定义了另一个函数 ​ 特点:定义在函数内的函数只能在函数内使用,外界不能直接访问 3.名称空间:存储名字与内存地址对应关系的空间 ​存储名称的空间,名称空间中,名字与内存地址一一对应 内置名称空间:解释器自带的名称与值的对应关系 python解释器启动的时创建,关闭pyth…
一.名称空间 1.定义:又名 name space,顾名思义,就是存放名字的地方.比如:若变量x = 1,1存放在内存中, 而名称空间正是存放名字x与1绑定关系的地方. 2.分类: locals : 函数内的名称空间,包括局部变量和形参 globals: 全局变量 builtins:内置模块的名字空间 注意:不同变量的作用域就是由这个变量所在的命名空间决定的. 3.作用域(范围) 全局范围:全局有效 局部范围:局部有效 查看作用域方法:globals(),locals() 4.作用域的查找顺序:…
最开始对名称空间的了解是在学习函数的时候,那时候知道了作用域的查找顺序,以及全局名称空间和局部名称空间,产生疑惑的时候为学递归的时候,那时候还没有名称空间这个概念,只知道递归有个最大深度,那时候以后递归产生的名称空间是一层套一层的,以及类里面的名称空间,所以产生了深究名称空间的想法,这才诞生了这篇博客,本篇博客借鉴了python的命名空间的内容,本人对里面的例子都试验了并发现了一个错误,在类中定义的列表生成式产生的命名空间也可以访问到类属性. 例子 # a.py lis = ['musibii'…
一.global与nonlocal #global x = 1 def f1(): global x # 声明此处是全部变量x x = 2 print(x) f1() # 调用f1后,修改了全局变量x = 2 print(x) # 打印结果为2 # nonlocal def f1(): x = 1 def f2(): nonlocal x # 此处声明使用外层函数的变量x x = 2 # 将外层函数进行了修改 print(x) # f2() print(x) # 因为f1()下的x已经被修改,所…
python函数 函数定义 def welcome(): print('hello world!!') welcome() #函数调用 ...运行结果 hello world!! 函数定义和编写原则: 尽量一个动作一个函数,以减少函数之间的耦合性: 函数传参 实参和形参 位置实参:函数调用时,每个形参都有一个实参(值)与之关联对应,最简单的关联方式是基于实参的顺序. def num (a,b): #a,b为形参 print(a) print(b) print(a +b) num(1,2) #1,…
空间名称与闭包函数 名称空间 名称空间 namespaces:存放名字的地方,是对栈区的划分 名称空间在栈区中分为三种,详细的划分不同的空间,不同空间可以存放相同名字的名字 内置名称空间 存放的名字:存放的python解析器内置的名字 存活周期:python解析器启动则产生,python解析器关闭则销毁 全局名称空间 存放的名字:运行顶级代码所产生的名字,不是函数内定义的以及不是python自带的名字 存活周期:python文件执行则产生,python文件运行完毕后销毁 局部名称空间 存放的名字…
一 .函数对象 一 .函数是第一类对象,即函数可以当作数据传递 可以被引用 可以当作参数传递 返回值可以是函数 可以当作容器类型的元素 二. 利用该特性,优雅的取代多分支的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…
一.动态参数#形参 有3种动态参数#*args 动态参数,不定长参数def func (*args): print(args,type(args))func(1,2,"alex",3,4,55,5,)#输出结果 (1, 2, 'alex', 3, 4, 55, 5) <class 'tuple'> def func(a,b,c,*args): print(a) print(b) print(c) print(args,type(args))func(1,2,"al…
""" 今日内容: 1.函数参数传值细节 2.三元表达式 3.列表及字典推导式 4.函数对象 5.名称空间与作用域 6.函数的嵌套定义初识 """ """ 一.函数参数的传值细节 举例: num = 10 def fn(n=num): print(n) num = 20 fn() 在上例中函数的参数列表是一个带有默认值的位置形参,由于初识传值为 n = num = 10 在调用之前num又重新赋值了,此时在函数内打印…
一:名称空间 1:什么是名称空间: 名称空间即:储存名字与值的内存地址关联关系的空间 2.名称空间的分类: 内置名称空间:存储器自带的一些名称与值的对应关系,如:print,len,max等; 生命周期为:在python解释器启动时创建,在解释器关闭时销毁 全局名称空间:除了内置的,函数内的都是在全局名称空间中 生命周期为:在执行文件时,创建全局名称空间,所有文件中的代码全部执行完毕后,销毁名称空间(即解释器关闭时) 局部名称空间:只要在函数内的名称空间就是局部的 生命周期为:调用函数时创建,函…
函数进阶: 一.动态参数:*args  **kwargs *args是元祖形式,接收除去键值对以外的所有参数 # args可以换成任意变量名,约定俗成用args **kwargs接收的只是键值对的参数,并保存在字典中. # kwargs可以换成任意变量名,约定俗成用kwargs *的魔性用法: l1 = [1,2,3] l2 = ['alex','taibai'] def func1(*args): print(args) # 结果:('1','2','3','alex','taibai') f…
今天学习内容有函数的返回值.函数参数的使用.名称空间与作用域.函数嵌套. 下来我们一一查看. 函数的返回值 看几个栗子: def func(x): y=func() print(y) def foo(): return None res=foo() print(res) def foo(): } res=foo() print(res['a']) def foo(): },,,] res=foo() print(res) 结果:({'a': 1}, 1, 'a', [1, 2]) def foo…
目录 名称空间 内置名称空间 全局名称空间 局部名称空间 名称的查找顺序 作用域 global关键字 nonlocal关键字 函数名的多种用法 函数的嵌套 名称空间 名称空间就是变量名与变量值绑定关系的地方.比如对于x=1,1存放于内存空间,而x与1的对应关系存储在名称空间中. 名称空间分为三类:内置名称空间.全局名称空间.局部名称空间. 内置名称空间 内置名称空间存储的是python解释器提前给我们定义好的,像len().print().open()等. 存活周期:python解释器运行则产生…
一:函数对象 函数是第一类对象,即表示函数可以当做数据传递 可以被引用:把函数内存地址赋值给一个变量名,仍然遵循函数的调用规则. 可以被当做参数传递:传递的是函数的运行的结果#可以当做返回值 把函数作为返回值返回的话,返回的结果是函数的内存地址. 可以当做容器类型的元素:意思就是可以作为列表和字典的元素利用函数的特性,可以取代多分枝的if. 示例: def auth(): print("登陆......") def register(): print("注册.......&q…
一.名称空间和作用域 1.全局名称空间(名称空间.命名空间): py文件运行时代码从上之下依次执行,看到一个变量就会将这个变量与对应值的内存地址的关系存到名称空间里,代码要运行时(print时)从名称空间里找变量与对应值的内存地址,通过内存地址找到对应的值. 2.局部名称空间(临时名称空间): 函数名放在内存地址里,当执行函数时,会在内存中开辟一个临时名称空间 ,存放函数体内的所有变量与值的关系.随着函数的执行完毕,临时空间自动关闭. 3.内置名称空间:所有的内置函数等存储的空间. 加载顺序:内…
本篇目录: 一.函数嵌套 二.函数名称空间与作用域 三.函数对象 四.闭包函数 ============================================================================== 一.函数嵌套 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…
一.函数的对象 函数是第一类对象,指的是函数名指向的值(函数)可以被当作数据去使用 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. 可以直接被引用  fn = cp_fn 2 .可以当作函数参数传递 computed(cp_fn, 100, 20) 3. 可以作为函数的返回值  get_cp_fn(cmd): return add 4. 可以作为容器类型的元素  method_map: 对应关系中的值 函数名存放的就是函数的地址,所以函数名也是对象,称之为函数对象 a= def fn(): num…
一,复习 字符编码 文件头:py2—ASCII,py3—UTF-8 三种字符串:u' ' b ' ' r ' ' u' ' .endcode(' utf-8 ') b' '.deconde(' utf-8 ') str(b' ' , encode=' utf-8 ' ) bytes( u' ' , encode=' utf-8 ') 文件操作: 三步骤: 1,打开文件 2,操作文件(读写) 3,关闭 简写: with open => 可以自动关闭文件流 操作模式: 主 :r w a x 从:t…
一.函数对象: 定义:函数对象就是函数名,函数名就是存放了函数的内存地址,存放了内存地址的变量就是对象 函数对象的应用: 可以直接被引用:(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.函数是第一类对象 #第一类对象的特性:# 可以被引用 # 可以当做参数传递 # 返回值是函数 # 可以当做容器类型的元素 # def func(): # print('from func') #可以被引用 # f=func() #可以被当做参数 # def bar(x): # print(x)#func内存地址 # x() # bar(func) #当做返回值 # def bar(x):#x=f…
一 函数是第一类对象,即函数可以当作数据传递 1 可以被引用 2 可以当作参数传递 3 返回值可以是函数 3 可以当作容器类型的元素 def foo(): return len f = foo print(foo) [foo, ] 函数嵌套(把大问题细分成小问题,把小问题平道一起解决) 函数的嵌套定义: 在函数内部又定义了其他函数 函数的嵌套调用:在一个函数内部又调用其他函数 2.名称空间与作用域: 什么是名称空间? 名称空间:存放名字的地方,三种名称空间, (之前遗留的问题x=1,1存放于内存…
一.函数对象 1.函数对象:函数名存放的就是函数的地址,所以函数名也是对象,称之为函数对象 a = 10 print(a,id(a)) def fn(): num = 10 print('fn fuction run') print(fn()) b = a print(b,id(b)) 2.函数对象的四个应用 ①可以直接被引用fn=cp_fn def fn(): num = 10 print('fn function run') print(fn) def fn(): num = 10 prin…
一.命名空间概念 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.高阶函数(map/reduce/filter) 高阶函数是指函数的参数可以是函数 这篇总结几个常用的高阶函数:map/reduce/filter map函数.reduce函数.filter函数都是Python中的内建函数. map函数 map函数的作用是将一个函数作用于一个序列的每一个元素,一行代码即可完成,不需要用我们平常喜欢用的循环.map将运算进行了抽象,我们能一眼就看出这个函数是对一个序列的每个元素进行了同样的一个操作.map()函数接收两个参数,一个是函数,一个是Iterable,…
函数对象 # 函数名就是存放了函数的内存地址,存放了内存地址的变量都是对象,即 函数名 就是 函数对象​# 函数对应的原因# 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)…