zoukankan      html  css  js  c++  java
  • python的装饰器 就是闭包

    def log(func):
        def wrapper(*args, **kw):
            print 'call %s():' % func.__name__
            return func(*args, **kw)
        return wrapper
    b=0
    @log
    def countdown(n):
        b=0
        while n>0:
            n=n-1
            b+=n
        return b
    print countdown(10)
    
    C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/cookbook/a27.py
    call countdown():
    45
    
    一个装饰器就是一个函数,它接受一个函数作为参数并返回一个新的函数。装饰器其实就是一个闭包
    
    # !/usr/bin/env python
    # -*- coding: utf-8 -*-
    def generate_greeting(prefix):
        def greeting(name):
            return prefix, name
    
        return greeting
    
    
    # 返回一个全新的函数
    a = generate_greeting('aaabbb')
    print a
    print type(a)
    
    print a('ffff')
    
    C:Python27python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/cookbook/a28.py
    <function greeting at 0x0258FA30>
    <type 'function'>
    ('aaabbb', 'ffff')

  • 相关阅读:
    git 管理
    SVN 管理
    为什么要做静态库
    Sqlite3
    CocoaPod
    内存管理
    readline的用法
    join合并字符串时使用生成器表达式
    pandas DataFrame数据转为list
    Jenkins自动化CI CD流水线之4--Master-Slave架构
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13349436.html
Copyright © 2011-2022 走看看