函数基础(三) 装饰器\闭包 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)输出一个函数 注意理 ...
随机推荐
- 3分钟掌握GIt常用命令
一.常用命令 git config [-l] 配置 git --help 帮助 git diff 文件 比较文件修改的内容 git add . 添加当前目录所有文件到暂存区 git add --u ...
- Python学习-while循环&逻辑运算符
一.while循环,continue.break语句在while循环中的使用 1.while循环语句: while 条件: 代码块 执行过程:判断条件是否为真,如果为真,执行代码块,继续下次循 ...
- 2015年蓝桥杯java b组第十题
10. 生命之树 在X森林里,上帝创建了生命之树. 他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值. 上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a ...
- 轻松部署calico
一.资源 官方文档 https://docs.projectcalico.org/v3.8/getting-started/kubernetes/installation/integration 二. ...
- Spring Cloud系列之Eureka服务治理
写在前面 Spring Cloud Eureka是基于Netflix Eureka做的二次封装.主要包含两部分: 服务注册中心 eureka server 服务提供者 eureka client ps ...
- 编程范式 --- 面向协议编程(Protocol Oriented Programming,简称POP)
面向协议编程(Protocol Oriented Programming,简称POP) 是Swift的一种编程范式,Apple于2015年WWDC踢出 在Swift的标准库中,能见到大量POP的影子 ...
- Hadoop点滴-HDFS命令行接口
1.-help[cmd] 显示命令的帮助信息 ./hdfs dfs -help ls1 2.-ls(r) 显示当前目录下的所有文件 -R层层循出文件夹 ./hdfs dfs -ls /log/map ...
- java面向对象,数据类型深入
java程序员面试题day02 1.类和对象有什么区别? java中的类通过class关键字进行定义,代表的是一种抽象的集合,在类中可以定义各种的属性和方法,代表的是每一个类的实例的特定的数据和动作, ...
- Python常用端口扫描
from socket import * import sys host=sys.argv[1] service={':'HTTP', ':'SQL_Server', ':'Remote_Destop ...
- RBD 基本使用 - Storage6
块存储管理系列文章 (1)RBD 基本使用 - Storage6 (2)iSCSI 网关管理 (3)使用 librbd 将虚拟机运行在 Ceph RBD (4)RBD Mirror 容灾 Ceph 块 ...