您的位置:首页 > 编程语言 > Python开发

python的装饰器 就是闭包

2017-11-18 16:55 260 查看
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')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: