我这种情况下,你可以重新打印
def preceeding_name(func):
@wraps(func)
def wrapper(*args, **kwargs):
old_print = print
def print(*arg, **kwarg):
old_print(func.__name__)
old_print(*arg, **kwarg)
result = func(*args, **kwargs)
return result
return wrapper
编辑: 我测试这项工作
old_print = print
def preceeding_name(func):
def print(*arg, **kwarg):
old_print(func.__name__, end='')
old_print(*arg, **kwarg)
def wrapper(*args, **kwargs):
print('')
result = func(*args, **kwargs)
return result
return wrapper
@preceeding_name
def a():
print('hi')
a()
@preceeding_name
def b():
print('hi')
b()
EDIT2:
old_print = print
def preceeding_name(func):
global print
def print(*arg, **kwarg):
old_print(func.__name__)
old_print(*arg, **kwarg)
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
return result
return wrapper
@preceeding_name
def a():
print('hi')
a()
@preceeding_name
def b():
# print('hi')
pass
b()
找出如果一个函数调用另一个函数为[硬盘](https://stackoverflow.com/questions/12013399/in-python-determine-if-a - 功能 - 通话,另一个功能)。我可以建议你使用['logging'](https://docs.python.org/3/library/logging.html)模块吗?然后,您可以在创建格式化程序时轻松使用诸如'%(funcName)s'之类的东西。 – Josh
@Josh,谢谢,我会看看这个功能 – Macaronnos
这可以通过覆盖sys.stdout来完成 –