week4_notebooke1
今日大纲:
01名称空间,作用域,取值顺序
02函数的嵌套
03内置函数 globals() locals()
04关键字global nonlocal
05函数名的应用
06闭包
07装饰器初识
08装饰器进阶 注意:
形参顺序:
位置参数,*agrs,默认参数,**kwargs **kwargs的使用方法
**kwargs 打包关键字参数成dict给函数体调用 *args的使用方法
*args 用来将参数打包成tuple给函数体调用 1、名称空间,作用域,取值顺序 - 名称空间:
当程序运行时,代码从上至下依次执行,他会将变量名和值得对应关系存放在一个空间中,这个空间叫做名称空间,命名空间,全局名称空间.
当程序遇到函数时,他会将函数名存放在内存中,函数体不管。
当函数执行时,内存会临时开辟一个空间,存放函数体里面的代码(变量,代码等)
函数外面访问不到临时空间的内容,随诊函数的执行完毕,临时名称空间会释放掉,临时开辟的空间叫做临时名称空间.也叫局部名称空间. - 分类;
全局名称空间
局部名称空间
内置名称空间 - 作用域:
全局作用域:
内置名称空间
全局名称空间
局部作用域:
局部名称空间
加载顺序:
内置名称空间--->全局名称空间--->局部名称空间
调用顺序(取值顺序):单向不可逆
局部名称空间--->全局名称空间--->内置名称空间 2、函数的嵌套:多个函数内部调用使用 3、内置函数
globals(): 返回一个字典,字典里面的内容是全局名称空间的内容
locals(): 返回一个字典,当前位置的所有变量 4、关键字:局部可以引用全局变量,但是不可以改变. - global:
-- 用法:
--- 引用并改变全局变量
--- 在局部作用域声明一个全局变量 - nonlocal:
-- 用法:
--- 不能操作全局变量
--- 从哪层引用的该变量,从那层开始全部改变
--- 用于多层函数调用,操作局部变量中的局部变量
- 取值:
-- 引用而不是改变
-- 取值从小到大取值 LEGB
-- 想改变上层空间的变量,要用global nonlocal - 对于可变的数据类型:list dict set 不用global nonlocal
- 不可变的数据类型:字符串 整型
- 如果默认参数是一个可变的数据类型,那么他在内存中永远是一个 (重点重点重点) 5、函数名的应用:
- 含义:
-- 函数名可以作为容器类数据的元素
-- 函数名可以作为函数的参数
-- 函数名可以作为函数的返回值
-- 像以上函数名,俗称第一类对象 6、闭包:
含义:内层函数对外层函数非全局变量的引用,叫做闭包
判断:用函数名.__closure__ 使用
用途:如果python解释器遇到闭包,有一个机制,这个闭包不会随着函数的结束而释放 7、装饰器初识
含义;本质是闭包
根本作用;在不影响原函数执行的基础上,增加一些额外的功能登陆打印等
week4_notebooke1的更多相关文章
随机推荐
- poj3281 Dining 最大流(奇妙的构图)
我是按照图论500题的文档来刷题的,看了这题怎么也不觉得这是最大流的题目.这应该是题目做得太少的缘故. 什么是最大流问题?最大流有什么特点? 最大流的特点我觉得有一下几点: 1.只有一个起点.一个终点 ...
- JDK1.7源码阅读tools包之------ArrayList,LinkedList,HashMap,TreeMap
1.HashMap 特点:基于哈希表的 Map 接口的实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.(除了非同步和允许使用 null 之外,HashMap 类与 Has ...
- 安装typescript开发环境
参考文档: http://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html 有两个方式 : 1.安装vs 2017,安 ...
- 2017/01/20 学习笔记 关于修改和重打jar包
背景 客户提供了jar包,但发现db表中缺少一个字段,db追加以后需要修改jar包中的source. 操作 如何修改jar包中的source并重新打一个新的jar包,做了如下操作. ① 开包 解压j ...
- 原生sql的各种问题
1.nutz有方法自动根据数据库建models吗?2.select * from a a没有建相应的models怎么取结果?3.可以直接操作result,而不是在callback里面设置吗? wend ...
- BZOJ 1726: [Usaco2006 Nov]Roadblocks第二短路 Dijkstra
Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样, ...
- Matrix(坑)
https://github.com/florent37/Android-3D-Layout
- anaconda下安装xgboost
1.下载whl文件 网址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#xgboost 选择合适自己的环境的下载,比如python3.6还是3.5的,64位机 ...
- js操作url参数
function getQueStr(url, ref) //获取参数值 { var str = url.substr(url.indexOf('?') + 1); if (str.indexOf(' ...
- Ural 1996 Cipher Message 3 (生成函数+FFT)
题面传送门 题目大意:给你两个$01$串$a$和$b$,每$8$个字符为$1$组,每组的最后一个字符可以在$01$之间转换,求$b$成为$a$的一个子串所需的最少转换次数,以及此时是从哪开始匹配的. ...