Discuss / Python / 运行前后打印'begin call'和'end call'

运行前后打印'begin call'和'end call'

Topic source
import functools

def log(both):
	if not isinstance(both, str):
		@functools.wraps(both)
		def log1(*arg, **kw):
			print('call %s():' % both.__name__)
			return both(*arg, **kw)
		return log1
	else:
		def log2(fn):
			@functools.wraps(fn)
			def wrapper(*arg, **kw):
				print('%s %s():' % (both, fn.__name__))
				return fn(*arg, **kw)
			return wrapper	
		return log2

@log
def now1():
	print('2019-6-13')

now1()

@log('execute')
def now2():
	print('2019-6-13')

now2()

既支持:

@log
def f():
    pass

又支持:

@log('execute')
def f():
    pass

  • 1

Reply