python 通用装饰器,带有参数的装饰器,
# 使用装饰器对有返回值的函数进行装饰
# def func(functionName):
# print('---func-1----')
# def func_in():
# print("----func_in---1-")
# x = functionName() #保存返回来的hahah
# print("----func_in---2-")
# return x
# print('---func-2----')
# return func_in
# @func
# def test():
# print("-----test-----")
# return "haha"
# ret = test()
# print("test return value is %s"%ret)
# ---func-1----
# ---func-2----
# ----func_in---1-
# -----test-----
# ----func_in---2-
# test return value is haha
# 使用通用装饰器对函数进行装饰
# def func(functionName):
# def func_in(*args,**kwatgs):
# print("记录日志")
# x = functionName(*args,**kwatgs)
# return x
# return func_in
# @func
# def test():
# print("-----test-----")
# return "haha"
# ret = test()
# print("test return value is %s"%ret)
# # -----test-----
# # test return value is haha
# @func
# def test2():
# print("----test2----")
# a = test2()
# print(a)
# # ----test2----
# # None
# @func
# def test3(a):
# print("-----test3----a=%d"%a)
# test3(10)
# -----test3----a=10
# 记录日志
# -----test-----
# test return value is haha
# 记录日志
# ----test2----
# None
# 记录日志
# -----test3----a=10
# 带有参数的装饰器、、
def func_arg(arg):
print(arg)
def func(functionName):
print('----func----')
def func_in():
print("--记录日志---")
print(arg)
if arg=='呵呵':
functionName()
functionName()
else:
functionName()
return func_in
return func
# 1.先执行func_arg('呵呵')函数,这个函数return的结果是func这个函数的引用
# 2.@func
# 3.使用@func对test进行装饰
# 带有参数的装饰器,能够起到在运行时,有不同的功能
@func_arg('呵呵')
def test():
print("-----test-----")
ret = test()
# 呵呵
# ----func----
# --记录日志---
# -----test-----
@func_arg("haha")
def test2():
print("--test2--")
test2()
# haha
# ----func----
# --记录日志---
# haha
# --test2--
python 通用装饰器,带有参数的装饰器,的更多相关文章
- python之带有参数的装饰器
一个小demo def set_level(level_num): def set_func(func): def call_func(*args, **kwargs): if level_num = ...
- python 装饰器 第七步:带有参数的装饰器
#第七步:带有参数的装饰器 #两个基本函数用同一个装饰器装饰 def outer(arg): print(arg) #这是装饰器的代码 def kuozhan(func): print(func) # ...
- python 装饰器 第五步(1):带有参数的装饰器
#第五步:带有参数的装饰器 #用于扩展基本函数的函数 def kuozhan(func): #内部函数(扩展之后的eat函数) #5由于调用的时候传了两个参数,未来的eat函数没有参数接收 #5报错的 ...
- Python 带有参数的装饰器
def wrapper_out(flag): # 装饰器本身的参数 def wrapper(fn): # 目标函数 def inner(*args, **kwargs): # 目标函数执行需要的参数 ...
- [python] 带有参数并且传递参数的装饰器
场景时这样的,我有个一大堆任务,我要给这些任务计时,入库.就需要一个带有参数的装饰器来记录任务名称, 在任务执行前和执行之后都需要记录任务当时执行的时刻. #-*- encoding=utf-8 -* ...
- Python带参数的装饰器
在装饰器函数里传入参数 # -*- coding: utf-8 -*- # 2017/12/2 21:38 # 这不是什么黑魔法,你只需要让包装器传递参数: def a_decorator_passi ...
- Python 基础之面向对象之八步理解装饰器
装饰器:在不改变原有代码的情况下,为该原函数扩展新功能特征:返回新函数,替换旧函数语法:@ 语法糖 1.装饰器原型 #例1: def kuozhan(func): def newfunc(): ...
- python基础之迭代器、生成器、装饰器
一.列表生成式 a = [0,1,2,3,4,5,6,7,8,9] b = [] for i in a: b.append(i+1) print(b) a = b print(a) --------- ...
- Python 带参数的装饰器 [2] 函数参数类型检查
在Python中,不知道函数参数类型是一个很正常的事情,特别是在一个大项目里.我见过有些项目里,每一个函数体的前十几行都在检查参数类型,这实在是太麻烦了.而且一旦参数有改动,这部分也需要改动.下面我们 ...
随机推荐
- xadmin后台页面定制和添加服务器监控组件
xadmin定制 项目需要添加服务器监控页面,碍于xadmin不是很好自定义页面,之前写过插件,太麻烦了,还是直接改源码 原理其实很简单,因为xadmin的处理流程和django类似,都是通过拦截UR ...
- 【转】python3解析库lxml
转自:http://www.cnblogs.com/zhangxinqi/p/9210211.html 阅读目录 1.python库lxml的安装 2.XPath常用规则 (1)读取文本解析节点 (2 ...
- Graham 扫描法找凸包(convexHull)
凸包定义 通俗的话来解释凸包:给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型,它能包含点集中所有的点  Graham扫描法 由最底的一点 \(p_1\) 开始(如果有多个这样的点, ...
- linux系统弱密码检测
需要自备弱密码明文字典 from _utils.patrol2 import data_format,report_format,run_cmd import platform import cryp ...
- hibernate框架学习之二级缓存(测试用例)
HqlDemoApp.java package cn.itcast.h3.query.hql; import java.io.Serializable; import org.hibernate.Qu ...
- ASP.NET MVC5高级编程 之 路由
每个ASP.NET MVC应用程序都需要路由来定义自己处理请求的方式.路由是MVC应用程序的入口点.路由的核心工作是将一个请求映射到一个操作 路由主要有两种用途: 匹配传入的请求(该请求不匹配服务器文 ...
- 【原创】编程基础之Ruby
ruby2.6.2 官方:https://www.ruby-lang.org/en/ 一 简介 A dynamic, open source programming language with a f ...
- [C]gcc编译器的一些常用语法
简单的GCC语法: 如果你只有一个文件(或者只有几个文件),那么就可以不写Makefile文件(当然有Makefile更加方便),用gcc直接编译就行了.在这里我们只介绍几个我经常用的几个参数,第一是 ...
- Confluence 6 管理协同编辑
协同编辑能够让项目小组中的协同合作达到下一个高度.这个页面对相关协同编辑中的问题进行了讨论,能够提供给你所有希望了解的内容. 进入 Collaborative editing 页面来获得项目小组是如何 ...
- Confluence 6 推荐的更新通知设置和禁用
你可以设置默认的发送选项(发送 / 不发送)和默认的发送时间(每天或每周). 如何配置推荐更新电子邮件通知: 在屏幕的右上角单击 控制台按钮 ,然后选择 General Configuration 链 ...