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:\Python27\python.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:\Python27\python.exe C:/Users/TLCB/PycharmProjects/untitled/mycompany/cookbook/a28.py
<function greeting at 0x0258FA30>
<type 'function'>
('aaabbb', 'ffff')
python的装饰器 就是闭包
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
上一篇:python 回调函数
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
常用的10个Python装饰器
python中常用的10个装饰器
python 装饰器 py装饰器 -
Python 闭包与装饰器
闭包: 在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,且
性能测试 内部函数 事务处理 -
装饰器与闭包
变量作用域在完成一个题目:利用带参数的装饰器限制函数执行的次数我遇到一个很疑惑
python 局部变量 作用域 全局变量 -
闭包与装饰器
闭包:在函数内部再定义一个函数,并且这个函数用到了外部函数的一些变量,
应用场景 事务处理 性能测试 -
闭包和装饰器
闭包和装饰器
仿函数 简单使用 赋值