函数基础(三) 装饰器\闭包 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)输出一个函数 注意理 ...
随机推荐
- python教程 - 猿说python
一.简介 知识改变命运,程序改变世界.互联网时代潜移默化的改变着我们的生活,伴随技术的进步,我想下一个时代应该属于人工智能和机器学习,属于python. pytho ...
- linux mysql中文乱码解决
测试的机器是ubuntu 12.04个别linux发行版可能略有不同. 登陆mysql查看当前字符集命令: mysql> show variable like '%char%'; +------ ...
- Eureka参数配置->Client端参数
1.基本参数配置列表: 参数 默认值 说明 eureka.client.availability-zones 告知client有哪些region及availability-zones,支持配置 ...
- Spark 学习笔记之 map/flatMap/filter/mapPartitions/mapPartitionsWithIndex/sample
map/flatMap/filter/mapPartitions/mapPartitionsWithIndex/sample:
- 究竟是.NET淹没在汪洋大海,还是人心的浮躁、见识的短浅?
这些年来有相当多的.net开发者转了其他语言,也有一部分是迫不得已因为公司的转型而转,其中也有一大部分觉得.net没前途性能不好比某些语言性能差.还有一部分会说出一些名词去指责.net说他做不到,其实 ...
- jdbc 以及 事务的java类编写
package com.gaosheng.utils; import java.sql.Connection;import java.sql.SQLException; import javax.sq ...
- 移动端的<meta>标签
<head> <meta charset="UTF-8" /> <!-- 页面关键词 --> <meta name="keywo ...
- 我最推荐的一张Java后端学习路线图,Java工程师必备
前言 学习路线图往往是学习一样技术的入门指南.网上搜到的Java学习路线图也是一抓一大把. 今天我只选一张图,仅此一图,足以包罗Java后端技术的知识点.所谓不求最好,但求最全,学习Java后端的同学 ...
- 编程杂谈——使用emplace_back取代push_back
近日在YouTube视频上看到关于vector中emplace_back与push_back区别的介绍,深感自己在现代C++中还是有不少遗漏的知识点,遂写了段代码,尝试比较两者的差别. 示例代码 #i ...
- 在集成环境中修改配置文件php.ini不生效的解决办法
配置完成之后一定要重启服务,如果重启服务还是不生效. 就去看一下phpinfo(),找到Loaded Configuration File选项,这个才是真正读取的配置文件