函数基础(三) 装饰器\闭包 day 12
昨日回顾
可变长参数
*
*形参:接受多余的位置实参
*实参(可迭代数据类型):打散可迭代数据类型
**
**形参:接受多余的关键字实参
**实参:打散字典.当作关键字实参传参
函数对象
- 引用
- 作为容器类元素
- 作为函数返回值
- 作为函数参数
函数嵌套
名称空间和作用域
- 内置名称空间:内置方法
- 全局名称空间:除了内置和局部就是全局
- 局部名称空间:函数内部的变量和函数
执行顺序:内置>全局>局部
搜索顺序:从当前位置开始 局部>全局>内置
全局作用域和局部作用域没有半毛钱关系
两个局部作用域之间也没有关系
今日内容
闭包函数
闭包函数把 闭包函数内部的变量+闭包函数内部的函数两者包裹在一起,然后通过返回值返回出去
装饰器
给函数增加功能的函数
原则:
- 不改变源代码
- 不改变调用方式
- 装饰器本质就是函数
def index():
'''被装饰的函数'''
print('index')
语法糖
装饰器必须放在被装饰函数的前面
装饰器模板
def deco(func):
def wrapper(*args,**kwargs):
#功能
res = func(*args,**kwargs)
return res
return wrapper
三层装饰器,添加额外的判断参数
迭代器
可迭代对象:具有
__iter__方法除了数字类型和函数外都是可迭代对象
迭代器对象:含有
__iter__和__next__方法只有文件是迭代器对象
迭代器对象一定是可迭代对象,可迭代对象不一定是迭代器对象
函数基础(三) 装饰器\闭包 day 12的更多相关文章
- python中函数总结之装饰器闭包
1.前言 函数也是一个对象,从而可以增加属性,使用句点来表示属性. 如果内部函数的定义包含了在外部函数中定义的对象的引用(外部对象可以是在外部函数之外),那么内部函数被称之为闭包. 2.装饰器 装饰器 ...
- python 函数基础及装饰器
没有参数的函数及return操作 def test1(): print ("welcome") def test2(): print ("welcomt test2&qu ...
- Day11 Python基础之装饰器(高级函数)(九)
在python中,装饰器.生成器和迭代器是特别重要的高级函数 https://www.cnblogs.com/yuanchenqi/articles/5830025.html 装饰器 1.如果说装 ...
- python基础之 装饰器,内置函数
1.闭包回顾 在学习装饰器之前,可以先复习一下什么是闭包? 在嵌套函数内部的函数可以使用外部变量(非全局变量)叫做闭包! def wrapper(): money =10 def inner(num) ...
- python基础之函数当中的装饰器
在实际工作当中存在一个开放封闭原则 1.对扩展是开放的 为什么要对扩展开放呢? 我们说,任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改.所以我们必须允许代码扩展.添加新 ...
- python基础(8)-装饰器函数&进阶
从小例子进入装饰器 统计一个函数执行耗时 原始版本 import time # time模块有提供时间相关函数 def do_something(): print("do_something ...
- Python函数篇:装饰器
装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理. ...
- python3【基础】-装饰器
要理解充分理解python的装饰器,有充分理解下述三个知识点为前提: python作用域规则 函数即对象 闭包 一.python作用域规则: 首先介绍python中的作用域规则.python的作用域规 ...
- Python3基础笔记--装饰器
装饰器是十二分重要的高级函数. 参考博客:装饰器 所需前提知识: 1.作用域: LEGB 2.高阶函数 高阶函数是至少满足下列一个条件的函数: 1)接受一个或多个函数作为输入 2)输出一个函数 注意理 ...
随机推荐
- 从壹开始学习 NetCore 新篇章 ║ Blog.Core 开发社之招募计划书
宫 哈喽大家好,国庆马上就要来了,在新的第四季度来临之际,祝大家年末能顺顺利利,解决所有的难题.大家可能从我的标题里也能看的出来,老张又要耍花样,搞事情了,近来随着 netcore 3.0 的正式推出 ...
- 一个selenium简单案例自动添加数据
//本来想着用execl来录入数据的,但是为了尽快完成所以直接搞了个数组 package aldtest; import org.openqa.selenium.*; import org.openq ...
- electron教程(二): http服务器, ws服务器, 进程管理
我的electron教程系列 electron教程(一): electron的安装和项目的创建 electron教程(二): http服务器, ws服务器, 进程管理 electron教程(三): 使 ...
- Spring 梳理-bean配置与装配
1 bean配置与装配 1.1 bean在XML文件中进行显示配置并装配 1.2 bean在JavaConfig中显示配置并装配 1.2.1 优点:类型是安全的,编译 ...
- dede tag标签静态化
看回那2个文件夹即可,txt说明书我已经修改过. 下面说一下tag标签静态化之后在内容页.列表页中如何使用. 内容页中沿用之前的方法即可: {dede:tag sort='new' getall='0 ...
- Docker 为非root用户授权
Docker 为非root用户授权: 当运行docker pull busybox时候,会提示sky用户无法调用docker. 那么应该把sky用户加入docker用户组,不过在添加的时候,又提示了如 ...
- ELK 学习笔记之 elasticsearch Shard和Segment概念
Shard和segment概念: 转载: http://blog.csdn.net/likui1314159/article/details/53217750 Shard(分片) 一个Shard就是一 ...
- Video/audio标签的一些基础使用心得
常用方法 .play():用于音频视频的播放 .pause():用于音频视频的暂停 常用属性 <audio src="Batmobile Battle Mode Reveal Musi ...
- [docker swarm] 从单容器走向负载均衡部署
背景 之前写过<<docker-compose真香>> 和<docker-compose.docker stack前世今生>两篇博客, 回顾一下思路: ① dock ...
- C++set 和 multiset的使用
最后一个自由支配的暑假,学一些自己感兴趣的部分,也算为大三作准备. C++中set集合的使用 定义一个int类型的集合 set<int> s: set<int>::iterat ...