After you've add explanation how you want to apply this, I think best way will be to use decorator. It's more universal solution, because you can add it to any function in your code and it will print all debug info if debug mode is on.
Code:
from functools import wraps
DEBUG = True
def debug_log(function):
@wraps(function)
def wrapper(*args, **kwargs):
if DEBUG:
print(">> Called", function.__name__, "
",
{**dict(zip(function.__code__.co_varnames, args)), **kwargs})
result = function(*args, **kwargs)
if DEBUG:
print(">>", function.__name__, "return:
", result)
return result
return wrapper
@debug_log
def first_example(a, b, c):
return 100
@debug_log
def second_example(d, e, f):
return 200
first_example(10, 11, 12)
first_example(c=12, a=10, b=11)
second_example(13, 14, 15)
second_example(e=14, d=13, f=15)
DEBUG = False
first_example(0, 0, 0)
second_example(1, 1, 1)
Output:
>> Called first_example
{'a': 10, 'b': 11, 'c': 12}
>> first_example return:
100
>> Called first_example
{'c': 12, 'a': 10, 'b': 11}
>> first_example return:
100
>> Called second_example
{'d': 13, 'e': 14, 'f': 15}
>> second_example return:
200
>> Called second_example
{'e': 14, 'd': 13, 'f': 15}
>> second_example return:
200
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…