#第五步:带有参数的装饰器
#用于扩展基本函数的函数
def kuozhan(func):
#内部函数(扩展之后的eat函数)
#5由于调用的时候传了两个参数,未来的eat函数没有参数接收
#5报错的时候显示neweat没有形参接收,但是给了两个实参
#5所以需要添加两个形参接收shui,na
def neweat(shui,na):#5调用的杨羊传到了shui,na
#4以下三步就是扩展之后的功能,于是我们把这三个哥们做成一个函数
#4取名叫做neweat
#扩展功能1
print('饭前要洗手')
#调用基本函数
func(shui,na)#5上面的shui,na传到了这里的shui,na
#扩展功能2
print('饭后溜一圈')
#4这里需要有返回值才能传给eat
#添加返回值func
#4return 12 eat原来是函数,eat扩展之后还以函数的形式赋值给eat
#4所以return后面必须是扩展之后的函数
return neweat
#基本函数
@kuozhan#eat = kuozhan(eat) #4eat就相当于以前的result,用来接收返回值
def eat(who,where):#5上面的func的shui,na传到了这里的who,where
print(who,'在',where,'吃饭')
print('吃饭')
#扩展之后的函数要重新赋值给基本函数!(但是此步骤还实现不了)
#eat = kuozhan(eat) #4eat就相当于以前的result,用来接收返回值
#print(eat)#4第四步的目的是为了让打印eat函数的时候打印一个函数
#4而不是像第二步和第三步打印回来的是None
#调用函数
eat('李白','江南')#eat就是扩展的内部函数neweat函数,就是return返回的值
eat('杜甫','江西')

python 装饰器 第五步(1):带有参数的装饰器的更多相关文章

  1. python 装饰器 第七步:带有参数的装饰器

    #第七步:带有参数的装饰器 #两个基本函数用同一个装饰器装饰 def outer(arg): print(arg) #这是装饰器的代码 def kuozhan(func): print(func) # ...

  2. python 装饰器 第五步(2):带有返回值得装饰器

    #第五步:带有返回值的装饰器 把第四步复制过来 #用于扩展基本函数的函数 def kuozhan(func): #内部函数(扩展之后的eat函数) def neweat(): #以下三步就是扩展之后的 ...

  3. python之带有参数的装饰器

    一个小demo def set_level(level_num): def set_func(func): def call_func(*args, **kwargs): if level_num = ...

  4. python 通用装饰器,带有参数的装饰器,

    # 使用装饰器对有返回值的函数进行装饰# def func(functionName): # print('---func-1----') # def func_in(): # print(" ...

  5. python 装饰器 第六步:带有收集参数的函数的装饰器

    #第六步:带有收集参数的函数的装饰器 #装饰器函数 def kuozhan(func): #内部函数(扩展之后的eat函数) def neweat(*w,**n): #以下三步就是扩展之后的功能,于是 ...

  6. Python 带有参数的装饰器

    def wrapper_out(flag): # 装饰器本身的参数 def wrapper(fn): # 目标函数 def inner(*args, **kwargs): # 目标函数执行需要的参数 ...

  7. [python] 带有参数并且传递参数的装饰器

    场景时这样的,我有个一大堆任务,我要给这些任务计时,入库.就需要一个带有参数的装饰器来记录任务名称, 在任务执行前和执行之后都需要记录任务当时执行的时刻. #-*- encoding=utf-8 -* ...

  8. Python 基础之面向对象之八步理解装饰器

    装饰器:在不改变原有代码的情况下,为该原函数扩展新功能特征:返回新函数,替换旧函数语法:@ 语法糖 1.装饰器原型 #例1: def kuozhan(func):    def newfunc():  ...

  9. Python初学者第二十三天 函数进阶(2)装饰器

    装饰器: 需求----> 写一个功能,测试其他同事函数的调用效率. 第一版:功能版 import time def func(): time.sleep(0.2) print('非常复杂') d ...

随机推荐

  1. 10: Django + Uwsgi + Nginx 的生产环境部署

    1.1 一些重要概念 1.Web协议介绍 Web协议出现顺序: CGI -> FCGI -> WSGI -> uwsgi 1. CGI:  最早的协议 2. FCGI:  比CGI快 ...

  2. CodeForces 219D Choosing Capital for Treeland (树形DP)经典

    <题目链接> 题目大意: 给定一个有向树,现在要你从这颗树上选一个点,使得从这个点出发,到达树上其它所有点所需翻转的边数最小,输出最少需要翻转的边数,并且将这些符合条件的点输出. 解题分析 ...

  3. G a+b+c+d=?

    G a+b+c+d=? 链接:https://ac.nowcoder.com/acm/contest/338/G来源:牛客网 题目描述 This is a very simple problem! Y ...

  4. 1233: [Usaco2009Open]干草堆tower

    传送门 感觉正着做不太好搞,考虑倒过来搞 容易想到贪心,每一层都贪心地选最小的宽度,然后发现 $WA$ 了... 因为一开始多选一点有时可以让下一层宽度更小 然后有一个神奇的结论,最高的方案一定有一种 ...

  5. 73.Largest Rectangle in Histogram(最大矩形)

    Level:   Hard 题目描述: Given n non-negative integers representing the histogram's bar height where the ...

  6. 模板引擎( art-template)

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8& ...

  7. JDBC的ResultSet游标转spark的DataFrame,数据类型的映射以TeraData数据库为例

    1.编写给ResultSet添加spark的schema成员及DF(DataFrame)成员 /* spark.sc对象因为是全局的,没有导入,需自行定义 teradata的字段类型转换成spark的 ...

  8. day17 python re模块 简易爬虫

    day17 python   一.re模块     1.re模块的基础方法         查找findall() import re #re.findall(pattern,string,flags ...

  9. 什么是NFA(不确定的有穷自动机)和DFA(确定的有穷自动机)

    本节知识点是<编译原理>第三章-词法分析,学习参考教材为清华大学出版社<编译原理>第三版: 前情提要: 字母表∑1和∑2的乘积( product): ∑1∑2 ={ab|a ∈ ...

  10. python3输出中文报错的原因,及解决办法(基于pycharm)

    通常python3里面如果有中文,在不连接其他设备和程序的情况下,报错信息大致如下: SyntaxError: Non-UTF-8 code starting with '\xd6' in file ...