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的更多相关文章
随机推荐
- hdu2819 Swap 最大匹配(难题)
题目大意: 给定一个元素的值只有1或者0的矩阵,每次可以交换两行(列),问有没有方案使得对角线上的值都是1.题目没有限制需要交换多少次,也没限制行交换或者列交换,也没限制是主对角线还是副对角线.虽然没 ...
- 使用Storm实现实时大数据分析!
随着数据体积的越来越大,实时处理成为了许多机构需要面对的首要挑战.Shruthi Kumar和Siddharth Patankar在Dr.Dobb's上结合了汽车超速监视,为我们演示了使用Storm进 ...
- java学习笔记1——继承
通过在类的声明中加入extends子句创建一个子类并继承父类的成员变量和方法.如: class SubClass extends SuperClass{ ... } 若SuperClass是另一个类的 ...
- jQuery,您可以实现元素的淡入淡出效果。
fadeIn() fadeOut() fadeToggle() fadeTo() jQuery fadeIn() 用于淡入已隐藏的元素 $("button").click(func ...
- Java中的常量
常量的概念 是指在Java程序中固定不变的数据.我们可以理解为是一种特殊的变量,它的值被设定后,在程序运行过程中不允许改变. 常量的分类 整数常量: 所有的整数 例如 100 -100 123 ...
- Redmine 甘特图导出 PDF 和 PNG 中文乱码问题
Redmine使用了RMagick来处理图片,fpdf处理PDF,并在调用时设定了字体PDF中文字体 redmine 中关于PDF字体设置的代码 case pdf_encoding ...
- 可横向滑动的vue tab组件
示例 前端使用技术:框架->vue 组件>ly-tab一个用于移动端的可触摸滑动具有回弹效果的可复用Vue组件 ly-tab 介绍地址 ly-tab npm地址 使用步骤 1,引入包,定义 ...
- python二级登陆菜单
""" 1.三级菜单 注册 登陆 注销 2.进入每一个一级菜单,都会有下一级的菜单"""user_item = dict()try: whi ...
- C语言基础 (12) 文件的操作 FILE
课程回顾 结构体基本操作: 结构体类型的定义 // struct为关键字 Stu为自定义标识符 // struct Stu才是结构体类型 // 结构体成员不能在定义类型时赋值 struct Stu { ...
- sql2008删除语句.txt
delete from [aixinxing].[dbo].[bbs2] where announceID in (select AnnounceID from [aixinxing].[dbo].[ ...