day 12 名称空间和闭包函数
函数嵌套
按照函数的两个阶段分为:
嵌套调用:在一个函数内部调用另一个函数
嵌套定义:在一个函数内部定义另一个函数
名称空间(namespace):存储名字的内存区域
名称空间的分类:
内置名称空间:存的是解释器自带的名称
全局名称空间:只要是顶着最左边写的,没有任何缩进,就在全局名称空间中
注意在if中如果if是顶着最左边的没有缩进,那么if里面的名字也在全局名称空间中,while,for with同样如此
局部名称空间:存的是函数内定义的名字
名称空间的加载顺序
内置 --> 全局 --> 局部
名字的查找顺序
局部 --> 全局 --> 内置
作用域
指的是名字生效的有效空间
存储名字的有三个地方
内置名称空间
全局名称空间
局部名称空间
全局作用域:
内置空间和全局空间都是同一个范围,都是全局作用域
局部作用域:
局部名称空间归为局部作用域
global(全局) 与nonlocal(不使用本地)关键字
global
当需要在函数内修改全局中名字的值需要使用global
注:必须在使用这个名字之前声明(global)
nonlocal
当需要在内层函数中修改外层函数中的名字的时候就使用nonlocal关键字
会一层一层往外层查找,直到找到了为止,不会寻找到全局作用中,最后一层函数中没有找到就会报错
函数对象
函数是第一对象
1.能够被调用
2.可以当做容器类型的元素
3.可以当做函数的参数
4.可以当做函数的返回值
函数名除了可以调用之外,其他的都与一个变量名没哟本质区别
闭包函数:
闭包函数:就是在一个函数定义另一个函数
闭包函数也是一种函数
特点是:
1.该函数是定义在另一个函数中
2.该函数包含了对外层函数中名字的引用,满足以上两条就是闭包函数
注意:名字所在的作用域,在函数定义阶段就已经固定了
day 12 名称空间和闭包函数的更多相关文章
- Python记录9:函数4:名称空间作用域+闭包函数+装饰器
''' 一: 名称空间namespaces 名称空间就是存放名字与值绑定关系的内存空间 二: 名称空间分为三种 内置名称空间: 1. 特点: 存放是python解释器自 ...
- Day11名称空间,作用域,闭包函数
Day11 1.函数对象: ①可以被引用 ②可以作为另一个函数的参数 ③可以作为另一个函数的返回值0 ④可以被存储到容器类型中 2.函数嵌套: ①嵌套调用:在一个函数中调用了另一个函数 ...
- Python名称空间和闭包
一.名称空间 1.定义:又名 name space,顾名思义,就是存放名字的地方.比如:若变量x = 1,1存放在内存中, 而名称空间正是存放名字x与1绑定关系的地方. 2.分类: locals : ...
- Python 的名称空间和作用域
最开始对名称空间的了解是在学习函数的时候,那时候知道了作用域的查找顺序,以及全局名称空间和局部名称空间,产生疑惑的时候为学递归的时候,那时候还没有名称空间这个概念,只知道递归有个最大深度,那时候以后递 ...
- python函数之闭包函数与无参装饰器
一.global与nonlocal #global x = 1 def f1(): global x # 声明此处是全部变量x x = 2 print(x) f1() # 调用f1后,修改了全局变量x ...
- python--函数、参数、名称空间与作用域、匿名函数、内置函数、闭包
python函数 函数定义 def welcome(): print('hello world!!') welcome() #函数调用 ...运行结果 hello world!! 函数定义和编写原则: ...
- Python 空间名称与闭包函数
空间名称与闭包函数 名称空间 名称空间 namespaces:存放名字的地方,是对栈区的划分 名称空间在栈区中分为三种,详细的划分不同的空间,不同空间可以存放相同名字的名字 内置名称空间 存放的名字: ...
- python全栈开发-Day9 函数对象、函数嵌套、名称空间与作用域
一 .函数对象 一 .函数是第一类对象,即函数可以当作数据传递 可以被引用 可以当作参数传递 返回值可以是函数 可以当作容器类型的元素 二. 利用该特性,优雅的取代多分支的if def foo(): ...
- Day 10 动态参数&名称空间,局部全部.函数嵌套&global nonlocal关键字.
一.动态参数#形参 有3种动态参数#*args 动态参数,不定长参数def func (*args): print(args,type(args))func(1,2,"alex", ...
随机推荐
- java 全局变量 的小结
利用关键字final声明常量,对于全局的常量(即在整个项目中都可用)通常按以下模式声明:public static final int MAX_VALUE=512 如果某常量只在本类使用,则应将其定义 ...
- L2-025. 分而治之
分而治之,各个击破是兵家常用的策略之一.在战争中,我们希望首先攻下敌方的部分城市,使其剩余的城市变成孤立无援,然后再分头各个击破.为此参谋部提供了若干打击方案.本题就请你编写程序,判断每个方案的可行性 ...
- BIOS备忘录之EC常用知识点
BIOS工程师眼中常用的EC知识点汇总: EC的硬件架构 EC硬件结构上主要分为两部分:Host Domain和EC Domain Host Domain就是通过LPC与CPU通信的部分(LPC部分需 ...
- Python 互斥锁
互斥锁Mutex的使用 多个线程处理共享数据,数据会出现问题: 2.7之前每100指令切换一次GIL锁,线程就会sleep,线程会把前100条处理指令存放在CPU缓存内,切换GIL锁后放入另外一个线程 ...
- Shell if条件语句
1.if条件语句:设定一个条件如果怎么,然后怎么样. (1)-gt大于.-lt小于.-ge大于等于.-le小于等于.-eq等于.-ne不等于. (2)[]内是包括变量时所使用的. (3)-f文件.-n ...
- linux的必知必会规则
- Java爬虫模拟登录——不给我毛概二的H某大学
你的账号访问太频繁,请一分钟之后再试! 从大一开始 就用脚本在刷课 在专业课踢的只剩下一门C#的情况下 活活刷到一周的课 大二开始教务系统多了一个非常**的操作 退课池 and 访问频繁缓冲 难道,我 ...
- 剑指offer(17)树的子结构
题目描述 输入两棵二叉树A,B,判断B是不是A的子结构.(ps:我们约定空树不是任意一个树的子结构) 题目分析 分析如何判断树B是不是树A的子结构,只需要两步.很容易看出来这是一个递归的过程.一般在树 ...
- MatLab数字图像处理实战(赵小川)-sift原理
- HTTP的简单的解析
HTTP 中文全称为超文本传输协议是一种为分布式,合作式,多媒体信息系统服务,面向应用层的协议.它是一种通用的,不分状态(stateless)的协议,除了诸如名称服务和分布对象管理系统之类的超文本用途 ...