python-day14--带参数的装饰器+多个装饰器装饰同一个函数
1.# 带参数的装饰器
def f1(flag):
def f2(func):
def inner(*args,**kwargs):
if flag:
'''执行函数之前要做的'''
r=func(*args,**kwargs)
if flag:
'''执行函数之后要做的'''
return r
return inner
return f2
@f1(True)
def f3():
print('egon')
return ('eva')
s=f3()
print(s) 2.#有参装饰器
def auth(auth_type): #auth_type='mysql'
def auth2(func):
def inner(*args,**kwargs):
if auth_type == 'file':
name=input('name:>> ')
pwd=input('password:>> ')
if name == 'egon' and pwd == '123':
res=func(*args,**kwargs)
return res
else:
print('auth error')
elif auth_type == 'mysql':
print('mysql auth')
else:
print('not valid auth source')
return inner
return auth2 @auth(auth_type='mysql') #@auth2 #index=auth2(最原始的index) #index=inner
def index(name):
print('welcome %s to index' %name) index('egon') #inner('egon')
2.#多个装饰器装饰一个函数
def qqxing(func):
def qqxing_inner(*args,**kwargs):
print('in qqxing:before')
ret = func(*args,**kwargs)
print('in qqxing:after')
return ret
return qqxing_inner def pipixia(func):
def pipixia_inner(*args,**kwargs):
print('in pipixia:before')
ret = func(*args,**kwargs)
print('in pipixia:after')
return ret
return pipixia_inner @qqxing
@pipixia
def dapangxie():
print("饿了么")
dapangxie() #应用场景 #func
#1.计算func的执行时间 @timmer
#1.登录认证 #@auth #@auth #先登录 在认证
#@timmer
#func #解耦 尽量的让代码分离。小功能之间的分离
#解耦的目的 提高代码的重用性
python-day14--带参数的装饰器+多个装饰器装饰同一个函数的更多相关文章
- python:带参数的装饰器,函数的有用信息
一.带参数的装饰器,函数的有用信息 def func1(): '''此函数的功能是完成的登陆的功能 return: 返回值是登陆成功与否(true,false) ''' print(333) func ...
- Python不带参数的类装饰器
# -*- coding: utf-8 -*- # author:baoshan # 不带参数的类装饰器 # 类装饰器的实现,必须实现__call__和__init__两个内置函数. # __init ...
- Python中带参数的装饰器
装饰器本身是用来是为一个函数是实现新的功能,并且不改变原函数的代码以及调用方式. 遇到这样一种问题: 众多函数调用了你写的装饰器,但客户有需求说,我想实现我可以随之控制装饰器是否生效. 那你就不可能在 ...
- Python - 关于带参数的装饰器的理解
[原创]转载请注明作者Johnthegreat和本文链接 关于装饰器的理解,特别像<盗梦空间>中的进入梦境和从梦境出来的过程,一层一层的深入梦境,然后又一层一层的返回,被带入梦境的是被装饰 ...
- python 脚本带参数
如果想对python脚本传参数,python中对应的argc, argv(c语言的命令行参数)是什么呢? 需要模块:sys参数个数:len(sys.argv)脚本名: sys.argv[0]参数 ...
- python生成带参数二维码
#coding:utf8 import urllib2 import urllib import json import string import random class WebChat(obje ...
- python自带库及第三方库api察看
今天发现一个很有意思的功能,python自带了所有库的文档查看器,配置如下: 配置pydoc服务,cmd中输入如下代码: python –m pydoc –p 1234 回车后 ,使用过程中,该窗口不 ...
- 带参数的Mixin
带参数的mixin 在Less中,还可以像函数一样定义一个带参数的mixin, 这种形式叫做 Parametric Mixin,即带参数的混入.如: // 定义一个样式选择器 .borderRadiu ...
- JS中setInterval、setTimeout不能传递带参数的函数的解决方法
setInterval 和 setTimeout 这两个函数比较好用,但会遇到比如说我隔个几秒后要执行的函数是带参数的,这种情况怎么办?可以用匿名函数包装处理 //不带参数的函数 function t ...
- Python带参数的装饰器
在装饰器函数里传入参数 # -*- coding: utf-8 -*- # 2017/12/2 21:38 # 这不是什么黑魔法,你只需要让包装器传递参数: def a_decorator_passi ...
随机推荐
- Linux基础命令---last
last 显示以前登录过的用户信息,last指令会搜索/var/log/wtmp文件(或者是经过-f选项指定的文件),然后列出文件中所有的用户信息.如果执行last指令时提示“last /var/lo ...
- 案例:java进制互转
十 进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBina ...
- shell字符串操作技巧
操作字符串 -------------- Bash支持超多的字符串操作,操作的种类和数量令人惊异.但不幸的是,这些工具缺乏集中性. 一些是参数替换的子集,但是另一些则属于UNIX的expr命令.这就导 ...
- python中递归调用
递归一个通俗的解释就是,在函数中调用函数本身:伪代码如下: In [31]: def fun(): ....: fun() # 这个递归没有任何作用,只是为了说明什么是递归 递归(Recursion) ...
- java安全体系之JCA、JCE、JAAS、JSSE及其关系
首先.如果是运行在internet上的系统,并且如果是个涉及到利益性的系统,不可避免的会遭受各种攻击(我们公司的很多系统从OS到DB到webapp就实时有收到攻击和破解),所以尽可能保证安全性将不再是 ...
- nw.exe开发DEMO下载
参考的原文链接:http://www.jianshu.com/p/7c66ee28ce51 最后,开发者怕你怀疑nw.js的强大,又提供了几个Demo和许多成功的案例来打消我们的顾虑.
- Timer,TimerTask,Handler
新建一个定时器线程,通过此线程每一秒发送数据到Handler,然后通过Handler来修改UI. 1.获得Handler,Timer,TimerTask对象. Handler handler=new ...
- cogs 444. [HAOI2010]软件安装
★★☆ 输入文件:install.in 输出文件:install.out 简单对比 时间限制:1 s 内存限制:128 MB [问题描述]现在我们的手头有N个软件,对于一个软件i,它要 ...
- fhq treap抄袭笔记
目录 碎碎念 点一下 注意!!! 模板 fhq treap 碎碎念 我咋感觉合并这么像左偏树呢 ps:难道你们的treap都是小头堆的吗 fhq真的是神人 现在看以前学的splay是有点恶心,尤其是压 ...
- Excel中的基本概念
Excel的相关概念工作薄:由若干个工作表组成,一个工作薄就是一个Excel文件.启动Excel或者新建文档时,Excel建立的缺省工作簿文件名为book1,book2,……其扩展名为xls工作薄内工 ...