Discuss / Python / 最后的思考题

最后的思考题

Topic source

NGUper

#1 Created at ... [Delete] [Delete and Lock User]

-- coding: utf-8 --

import functools def log(text): def decorate(func): @functools.wraps(func) def wrapper(args, kw): if len(text) == 0: print('%s():' % func.name) else: print('%s %s():' % (text[0], func.name))
return func(*args,
kw) return wrapper return decorate

@log() def now1(): print('2015-08-09')

@log('excute') def now2(): print('2015-08-09')

print(now1()) print(now2())

NGUper

#2 Created at ... [Delete] [Delete and Lock User]

update:不好意思,格式有点问题,现在改了下:

# -*- coding: utf-8 -*-
import functools
def log(*text):
    def decorate(func):
        @functools.wraps(func)
        def wrapper(*args, **kw):
            if len(text) == 0:
                print('%s():' % func.__name__)
            else:
                print('%s %s():' % (text[0], func.__name__))    
            return func(*args, **kw)
        return wrapper
    return decorate

@log()
def now1():
    print('2015-08-09')

@log('excute')
def now2():
    print('2015-08-09')

print(now1())
print(now2())

import functools

def log(text): if len(text) != 0: def decorator(func): @functools.wraps(func) def wrapper(args, kw): print('%s %s():' % (text[0], func.name)) func(*args, kw) return wrapper return decorator else: def decorator(func): @functools.wraps(func) def wrapper(args, **kw): print('call %s():' % func.name) func(args, **kw) return wrapper return decorator @log('execute')# def now(): print('2015-3-25') now()

请问:log函数没有func参数,在运行的时候是怎么把原函数now()传进去的?


  • 1

Reply