zoukankan      html  css  js  c++  java
  • python编程基础之二十八

    装饰器:说白了就是闭包,但是内部函数调用外部变量调用的是函数,

    好处:就是在不用修改原函数代码的前提下给函数增加新的功能

    装饰器有两种写法

    第一种:

     1 #被修饰的函数
     2 def say_hello(name):
     3     print('我就是人见人爱,花见花开的%s'%name)
     4     
     5 # 参数是被修饰函数
     6 def wrapper(func):     #1.定义装饰器
     7     def inner(name):   #2.定义闭包 在闭包中增加功能
     8         print('-' * 50)
     9         func(name)     #3.调用原函数实现原来的功能
    10         print('*' * 50)
    11     return inner       #4.返回增强功能的函数
    12 
    13 say_hello = wrapper(say_hello) #5.获取增强功能的函数
    14 say_hello('张三')         #6. 调用增强函数,实现功能
    View Code

    第二种:

     1 def wrapper(func):
     2   def inner(age1):
     3       #增加的功能
     4       if age1 < 0:
     5           age1 = 0
     6       #调用原函数
     7       func(age1)
     8   return inner
     9   
    10 @wrapper     #相当于 getAge = wrapper(getage)
    11 def getAge(age):
    12     print(age)
    13 getAge(18)  #调用增强的函数
    View Code

    直接在被修饰的函数定义前加@修饰器函数名

    多个修饰器函数修饰同一个函数

    记得修饰顺序按照远近顺序就行,近的先修饰

     1 def wrapper1(func):
     2       print("wrapper1~~~~外部函数")
     3       def inner(a,b):
     4           print('wrapper1-----内部函数')
     5           func(a,b)
     6       return inner
     7     
     8     def wrapper2(func):
     9          print("wrapper2~~~~外部函数")
    10         def inner(a, b):
    11             print("wrapper2~~~~内部函数")
    12             func(a, b)
    13         return inner
    14         
    15     @wrapper1
    16     @wrapper2
    17     def text(num1,num2):
    18         print(num1 + num2)    
    19         
    20     text(10,20)
    View Code

    递归:一个函数直接或间接调用自己,递归分为正向递归,逆向递归两个过程

    一个递归一定包含两个部分:递归结束条件,递归调用自己

    1 def  recurve(*args,**kw):    
    2       if 递归终止条件:   #递归终止条件必须在递归调用前
    3           # to do 
    4        else:
    5           #to do
    6           recurve(参数)
    7           #to do
    View Code
  • 相关阅读:
    hibernate 使用hibernate 的注解做多对一双向映射
    JBPM学习笔记
    在测试Hibernate的一对多双向关联映射时
    js定时三秒后自动跳转页面
    struts2 的验证框架
    hibernate 双向一多对关联 删除一端时级联删除多端
    JPA 一些常用的东西
    Python 基础语法
    设计一个带有getmin功能的栈,保证时间复杂度在O(1)
    数据结构栈模拟队列
  • 原文地址:https://www.cnblogs.com/higer666/p/9451298.html
Copyright © 2011-2022 走看看