python笔记20-装饰器、作用域
函数的作用域
是就近原则,从里往外找,如果自己函数里有,就拿过来
如果自己的函数里面没有的话,就去它父级函数里面找,父亲用不了儿子的,儿子可以用父亲的
函数只有被调用才会执行
# name = 'python'
# def warpper():#1
# name='吴冰'
# def deco():#2
# name ='陈冬瓜'
# def hhh():#3
# name = '张莹'
# print('xxx%s'%name)
# print('我在里面%s'%name)
# hhh()
# deco()
# print('外面的name是%s'%name)
# warpper() 装饰器
#1、函数里面也可以嵌套的定义一个函数
#2、高阶函数
#装饰器说白了就是函数嵌套+高阶函数
#装饰器的作用就是在不改变原有函数的调用方式,入参的情况下,给函数添加新功能
#偷偷摸摸的给函数加上新功能,但是不改变原来的函数
#常用模块
#什么是模块,模块其实就是一个python文件
import time,os,sys
def timer(func):
def deco(*args,**kwargs):
#*args,**kwargs用来接收传入函数的参数
start_time = time.time()
res = func(*args,**kwargs)#获取返回值
end_time = time.time()
print('runtime',end_time-start_time)
return res
return deco @timer #run = timer(run)
def run():
# start_time = time.time()
print('run..')
time.sleep(2)
# end_time = time.time()
# print('runtime', end_time - start_time)
#run == deco,
@timer
def run2(name):
print(name)
time.sleep(0.5)
run2('niuhanyang') #上面这个函数其实就是返回了一个函数名而已
#1、调用timer函数的时候,要传入一个方法名,
# timer函数在函数内部定义了一个函数叫做deco
#又在函数deco内部调用了timer里面传入的方法
#run保存的是deco,deco是一个函数,调用run就是调用deco
python笔记20-装饰器、作用域的更多相关文章
- python笔记 - day4-之装饰器
python笔记 - day4-之装饰器 需求: 给f1~f100增加个log: def outer(): #定义增加的log print("log") ...
- 20.python笔记之装饰器
装饰器 装饰器是函数,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或类,使用装饰器可以在函数执行前和执行后添加相应操作. 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插 ...
- Python笔记:装饰器
装饰器 1.特点:装饰器的作用就是为已存在的对象添加额外的功能,特点在于不用改变原先的代码即可扩展功能: 2.使用:装饰器其实也是一个函数,加上@符号后放在另一个函数“头上”就实现了装饰 ...
- Python学习笔记:装饰器
Python 装饰器的基本概念和应用 代码编写要遵循开放封闭原则,虽然在这个原则是用的面向对象开发,但是也适用于函数式编程,简单来说,它规定已经实现的功能代码不允许被修改,但可以被扩展,即: 封闭:已 ...
- Noah的学习笔记之Python篇:装饰器
Noah的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 3.命令行解析 注:本文全原创,作者:Noah Zhang (http://www.cnblogs.com/noahzn/) ...
- 第二篇:python高级之装饰器
python高级之装饰器 python高级之装饰器 本节内容 高阶函数 嵌套函数及闭包 装饰器 装饰器带参数 装饰器的嵌套 functools.wraps模块 递归函数被装饰 1.高阶函数 高阶函 ...
- Day11 Python基础之装饰器(高级函数)(九)
在python中,装饰器.生成器和迭代器是特别重要的高级函数 https://www.cnblogs.com/yuanchenqi/articles/5830025.html 装饰器 1.如果说装 ...
- python函数闭包-装饰器-03
可调用对象 callable() # 可调用的(这个东西加括号可以执行特定的功能,类和函数) 可调用对象即 callable(对象) 返回为 True 的对象 x = 1 print(cal ...
- python高级之装饰器
python高级之装饰器 本节内容 高阶函数 嵌套函数及闭包 装饰器 装饰器带参数 装饰器的嵌套 functools.wraps模块 递归函数被装饰 1.高阶函数 高阶函数的定义: 满足下面两个条件之 ...
- 十. Python基础(10)--装饰器
十. Python基础(10)--装饰器 1 ● 装饰器 A decorator is a function that take a function as an argument and retur ...
随机推荐
- [译]RabbitMQ教程C#版 - 远程过程调用(RPC)
先决条件 本教程假定 RabbitMQ 已经安装,并运行在localhost标准端口(5672).如果你使用不同的主机.端口或证书,则需要调整连接设置. 从哪里获得帮助 如果您在阅读本教程时遇到困难, ...
- 我的第一篇博客。(JavaScript的声明和数据类型的一些笔记)
这是我的第一篇博客,务必请大家多多关照. 下面是前端js的变量和数据类型的一些笔记,不是很全请多多包涵. 1.变量 变量的声明 var 变量名 变量这个容器中放的是数据 变量的赋值 变量名 = 数据 ...
- CentOS7攻克日记(三) —— 安装Python3.6
我是在EVERNOTE上面写的,本来格式是有代码段的,结果复制上来就没有了,所以会有一点乱,我就不调整了 我主要安装的是python环境,这一篇主要解决一下python的问题.在这里给个建议,安装 ...
- 移动质量(MQ)测试系列
移动质量(MQ)测试 向移动开发者提供专业.稳定.全面.高价值的自动化测试平台. 发现 APP 中的各类隐患,包括 APP 崩溃.各类兼容性.功能性.性能问题等等. MQ 的 5 大功能(兼容性测试. ...
- spring cloud之Feign的使用
原始的调用客户端的方式是通过注入restTemplate的方式 restTemplate.getForObject("http://CLIENT/hello", String.cl ...
- 关于Struts2自动装配和访问Servlet API
自动装配 1.根据属性的getter和setter获取值 index.jsp <s:form action="hello" method="POST"& ...
- cowboy源码分析(二)
接 cowboy源码分析(一) 下面我们重点看看cowboy_protocol.erl代码 -module(cowboy_protocol). %% API. -export([start_link/ ...
- C# 一些不注意知识点:命名空间,等级,class等等
C# 命名空间表示域,控制着域内的对象. 命名空间是第一等级,class,delegate,enum,interface,struct是第二等级: 方法,属性,字段,索引,事件,常量,构造函数,终结器 ...
- 如何在hadoop上做等频离散化
抛砖引玉,先根据特征值group by,统计每个特征值出现次数,然后reduce到一个文件,根据一个文件来统计吧,毕竟,你知道多个桶,那么每个桶多少个样本就是确定了,数数,数到一个桶样本的时候停止,就 ...
- 采用Tensorflow内部函数直接对模型进行冻结
# enhance_raw.py # transform from single frame into multi-frame enhanced single raw from __future__ ...