Python学习之路

三元运算 变量 = 条件返回True的结果 if 条件 else 条件返回False ,用于简单

import time

time.time() 1970年至今多少秒

time.sleep()暂时休眠

装饰器形成过程

1def func(): 2 time.sleep(0.01) 3 print('fds') 4def timmer(f): #装饰器函数 5 def inner(): 6 start = time.time() 7 f() #被装饰的函数 8 end = time.time() 9 print(end - start) 10 return inner 11func = timmer(func) 12func()

View Code

timer就是一个装饰器函数,只对一个函数,有一些装饰作用

装饰器作用

 不想修改函数的调用方式,但还想在原来的函数前后添加功能

原则

开发封闭原则

  开放:对扩展是开放的

  封闭:对修改是封闭的

封版

语法糖

1def timmer(f): #装饰器函数名 2 def inner(): 3 start = time.time() 4 f() #被装饰的函数 5 end = time.time() 6 print(end - start) 7 return inner 8@timmer #语法糖 9def func():#被装饰的函数 10 time.sleep(0.01) 11 print('fds') 12# func = timmer(func) 13func()

View Code

1def timmer(f): #装饰器函数名 2 def inner(): 3 start = time.time() 4 ret = f() #被装饰的函数 5 end = time.time() 6 print(end - start) 7 return ret 8 return inner 9@timmer #语法糖 10def func():#被装饰的函数 11 time.sleep(0.01) 12 print('fds') 13 return 'hhh' 14# func = timmer(func) 15ret = func() #inner 16print(ret) 17#fds 18# 0.01003718376159668 19# hhh

View Code

装饰带参数函数的装饰器

1def timmer(f): #装饰器函数名 2 def inner(a): 3 start = time.time() 4 ret = f(a) #被装饰的函数 5 end = time.time() 6 print(end - start) 7 return ret 8 return inner 9@timmer #语法糖 10def func(a):#被装饰的函数 11 time.sleep(0.01) 12 print('fds',a) 13 return 'hhh' 14# func = timmer(func) 15ret = func(1) #inner 16print(ret) 17# fds 1 18# 0.010416269302368164 19# hhh

View Code

1def timmer(f): #装饰器函数名 2 def inner(*args,**kwargs): 3 start = time.time() 4 ret = f(*args,**kwargs) #被装饰的函数 5 end = time.time() 6 print(end - start) 7 return ret 8 return inner 9@timmer #语法糖 10def func(a,b):#被装饰的函数 11 time.sleep(0.01) 12 print('fds',a,b) 13 return '111' 14 15@timmer #语法糖 16def func1(a):#被装饰的函数 17 time.sleep(0.01) 18 print('fds',a) 19 return '222' 20# func = timmer(func) 21ret = func(1,2) #inner 22ret1 = func1(1) 23# print(ret,ret1) 24# fds 1 2 25# 0.010915040969848633 26# fds 1 27# 0.01041555404663086 28# 111 222

View Code

装饰器的固定模式

1def wrapper(func): 2 def inner(*args,**kwargs): 3 ret = func(*args,**kwargs) #被装饰函数 4 return ret 5 return inner() 6@wrapper #qq = wrapper(qq) 7def qq(): 8 print(123) 9 10ret = qq() #相当于在执行inner()

View Code

1def wrapper(func): 2 def inner(*args,**kwargs): 3 print('在被装饰器之前做的事:') 4 ret = func(*args,**kwargs) 5 print('在被装饰的函数执行之后做的事:') 6 return ret 7 return inner 8 9@wrapper 10def h(day): 11 print("gg") 12 return 'tyw' 13 14ret = h(3) 15print(ret) 16# 在被装饰器之前做的事: 17# gg 18# 在被装饰的函数执行之后做的事: 19# tyw

View Code

1def outer(*args,**kwargs): 2 print(args) 3 print(*args) 4 def inner(*args): 5 print('inner',args) 6 inner(*args) 7outer(1,2,3) # ==outer(#[1,2,3,4]) 8# (1, 2, 3) 9# 1 2 3 10# inner (1, 2, 3)

View Code

1def wa(): 2 ''' 3 一个哈哈哈的函数 4 :return: 5 ''' 6 print('哈哈哈') 7 8print(wa.__name__) #查看字符串的函数名 9print(wa.__doc__) #查看函数注释 10# wa 11# 12# 一个哈哈哈的函数 13# :return

View Code

1def wrapper(func): #func = h 2 def inner(*args,**kwargs): 3 print('在被装饰器之前做的事:') 4 ret = func(*args,**kwargs) 5 print('在被装饰的函数执行之后做的事:') 6 return ret 7 return inner 8 9@wrapper 10def h(day): 11 print("gg") 12 return 'tyw' 13print(h.__name__)#inner

View Code

wraps

1from functools import wraps 2def wrapper(func): #func = h 3 @wraps(func) 4 def inner(*args,**kwargs): 5 print('在被装饰器之前做的事:') 6 ret = func(*args,**kwargs) 7 print('在被装饰的函数执行之后做的事:') 8 return ret 9 return inner 10 11@wrapper 12def h(day): 13 print("gg") 14 return 'tyw' 15print(h.__name__)#h

View Code

带参数的装饰器

1import time 2flag = True 3def timmer_out(flag): 4 def timmer(func): 5 def inner(*args,**kwargs): 6 if flag: 7 start = time.time() 8 ret = func(*args,**kwargs) 9 end = time.time() 10 print(end - start) 11 return ret 12 else: 13 ret = func(*args,**kwargs) 14 return inner 15 return timmer 16@timmer_out(flag) # == timmer = timmer_out(flag) 17 # @timmer 18def ww(): 19 time.sleep(0.1) 20 print('hhh') 21@timmer_out(flag) 22def egt(): 23 time.sleep(0.1) 24 print('dddgs') 25flag = False 26ww() 27egt() 28# hhh 29# 0.10020256042480469 30# dddgs 31# 0.10077428817749023

View Code

多个装饰器装饰一个函数

1def wapper1(func): 2 def inner1(): 3 print('wrap1,bf func') 4 func() 5 print('qrp1,af func') 6 return inner1 7def wapper2(func): 8 def inner2(): 9 print('wrap2,bf func') 10 func() 11 print('qrp2,af func') 12 return inner2 13@wapper2 14@wapper1 15def f(): 16 print('in f') 17f() 18# wrap2,bf func 19# wrap1,bf func 20# in f 21# qrp1,af func 22# qrp2,af func

View Code

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''

Java获得今日零时零分零秒的时间(Date型)

publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS