python学习之老男孩python全栈第九期_day011知识点总结
# 装饰器的形成的过程:最简单的装饰器;有返回值的;有一个参数的;万能参数
# 装饰器的作用
# 原则:开放封闭原则
# 语法糖
# 装饰器的固定模式:
# def wrapper(f): # 装饰器函数,f是被装饰的函数
# def inner(*args,**kwargs):
# '''在被装饰函数之前要做的事'''
# res = f(*args,**kwargs) # 被装饰的函数
# '''在被装饰函数之后要做的事'''
# return res
# return inner import time
# print(time.time()) # 获取当前时间
# time.sleep(5) # 让程序在执行到这个位置的时候停一会 # def func():
# '''
# 计算程序运行所用时间
# :return: 程序运行时间
# '''
# start = time.time()
# print('老板好,同事好,大家好')
# time.sleep(0.01)
# end = time.time()
# print(end - start)
# func() # def timer(f): # 专门写一个函数,计算函数执行时间
# start = time.time()
# f()
# end = time.time()
# print(end - start)
# def func():
# time.sleep(0.01)
# print('老板好,同事好,大家好')
# timer(func) # def timer(f): # 装饰器函数
# def inner():
# start = time.time()
# res = f() # 被装饰的函数
# end = time.time()
# print(end - start)
# return res
# return inner
# @timer # 等于func = timer(func) 语法糖, @装饰器函数名,紧跟被装饰的函数
# def func(): # 被装饰的函数
# time.sleep(0.01)
# print('老板好,同事好,大家好')
# return '新年好'
# # func = timer(func)
# res = func()
# print(res) # 装饰器的作用:不想修改函数的调用方式, 但是还想在原来的函数前后添加功能
# timer就是一个装饰器函数,只是对一个函数 有一些装饰作用 # 原则:开放封闭原则
# 开放:对扩展是开放的
# 封闭:读修改是封闭的 #
# def outer():
# def inner():
# return 'inner'
# inner()
# outer()
#---------------------------------------------------------------------------------------------------------------- # 装饰带参数函数的装饰器
# def timer(f): # 装饰器函数
# def inner(*args,**kwargs):
# start = time.time()
# res = f(*args,**kwargs) # 被装饰的函数
# end = time.time()
# print(end - start)
# return res
# return inner
# @timer # 等于func = timer(func) 语法糖, @装饰器函数名,紧跟被装饰的函数
# def func(a,b): # 被装饰的函数
# time.sleep(0.01)
# print('老板好,同事好,大家好',a,b)
# return '新年好'
#
# @timer
# def func1(a): # 被装饰的函数
# time.sleep(0.01)
# print('老板好,同事好,大家好',a)
# return '新年好'
# res = func(1,b = 2)
# ret = func1(1)
# print(res,ret) #--------------------------------------------------------------------------------------------------------
def wrapper(f): # 装饰器函数,f是被装饰的函数
def inner(*args,**kwargs):
'''在被装饰函数之前要做的事'''
res = f(*args,**kwargs) # 被装饰的函数
'''在被装饰函数之后要做的事'''
return res
return inner @wrapper
def func(a,b): # 被装饰的函数
time.sleep(0.01)
print('老板好,同事好,大家好',a,b)
return '新年好'
res = func(1,b = 2)
print(res)
python学习之老男孩python全栈第九期_day011知识点总结的更多相关文章
- python学习之老男孩python全栈第九期_day027知识点总结——反射、类的内置方法
一. 反射 ''' # isinstance class A:pass class B(A):pass a = A() print(isinstance(a,A)) # 判断对象和类的关系 print ...
- python学习之老男孩python全栈第九期_day023知识点总结——类和对象命名空间、组合
一. 类和对象命名空间类里 可以定义两种属性: 1. 静态属性 2. 动态属性 class Course: language = 'Chinese' def __init__(self, teache ...
- python学习之老男孩python全栈第九期_day019知识点总结——collections模块、时间模块、random模块、os模块、sys模块
一. collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:namedtuple.deque.Counte ...
- python学习之老男孩python全栈第九期_day017知识点总结——初识递归、算法
一. 递归函数 如果一个函数在内部调用自身本身,这个函数就是递归函数. 最大递归深度默认是997 -- python从内存角度出发做得限制(而不是程序真的报错),最大深度可以修改 def func(n ...
- python学习之老男孩python全栈第九期_day010知识点总结
def qqxing(l = []): # 可变数据类型 l.append(1) print(l)qqxing() # [1]qqxing([]) # [1]qqxing() # [1, 1]qqxi ...
- python学习之老男孩python全栈第九期_day007知识点总结
基础数据类型汇总 1. str 2. int 3. list 4. bool 5. dict (1) fromkeys Python 字典 fromkeys() 方法用于创建一个新的字典,并以可迭代对 ...
- python学习之老男孩python全栈第九期_day001知识点总结
1. Python2与Python3的区别: Python2:源码不标准,混乱,重复代码太多: Python3:统一标准,去除重复代码. 编码方式: python2的默认编码方式为ASCII码:pyt ...
- python学习之老男孩python全栈第九期_day014知识点总结
# 迭代器和生成器# 迭代器 # 双下方法:很少直接调用的方法,一般情况下,是通过其他语法触发的# 可迭代的 --> 可迭代协议:含有__iter__的方法( '__iter__' in dir ...
- python学习之老男孩python全栈第九期_day016知识点总结
'''数据类型:intbool... 数据结构:dict (python独有的)listtuple (pytho独有的)setstr''' # reverse() 反转l = [1,2,3,4,5]l ...
随机推荐
- 这两周服务器被攻击,封锁了600多个IP地址段后今天服务器安静多了
这两周服务器被攻击,封锁了600多个IP地址段后今天服务器安静多了 建议大家在自己的服务器上也封杀这些瘪三的地址 iptables -I INPUT -s 123.44.55.0/24 -j DROP ...
- Android从零开始
Android开发环境的安装 1 IDE Android可以使用开发的IDE有Eclipse 或者 Android Studio.Android Studio还处于v 0.1.x版本,是early a ...
- Android使用内容提供者实现增删改查操作
Android使用内容提供者实现增删改查操作 这里需要建立两个项目:SiYouShuJuKu(使用内容提供者暴露相关的操作),DQDYGApplication(使用内容解析者对第一个应用进行相关的解析 ...
- ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Cannot run program "hive": error=2, No such file or directory
原因是hive没有设置环境变量 1,vim /etc/profile (切换root用户) 2.source /etc/profile
- zend studio 9.0.2 破解-注册-汉化流程
1.运行 ZendStudio-9.0.2.msi :注意安装后不要启动: 附其下载地址:下载9.0.2版本的Zend StudioZend Studio 9.0.2下载地址:http://www.g ...
- IDEA中Git的使用基础
场景概述 工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程Git仓库上获取项目源码 ...
- zmq 三种模型的python实现
1.Request-Reply模式: 客户端在请求后,服务端必须回响应 server: #!/usr/bin/python #-*-coding:utf-8-*- import time import ...
- kafka-java客户端连接
使用java客户端, kafkaproducer, kafkaconsumer进行kafka的连接 注: 0.10 版本之后, 连接kafka只需要brokerip即可, 不需要zookeeper的信 ...
- Linux 技巧:让进程在后台可靠运行的几种方法(转)
我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败.如何让命令提交后不受本地关闭终端窗口/网络断开 ...
- intellij idea 怎么全局搜索--转
https://jingyan.baidu.com/article/29697b9163ac7dab20de3cbf.html intellij idea是一款智能,功能强大的ide,对比eclips ...