我這種情況下,你可以重新打印
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來完成 –