neh*_*iah 6 python python-decorators
正如我们在Python 3中print()所知道的那样,是否可以创建一个包装的装饰版本json.dumps(indent=4)
对于前
调用print(mydict)应产生与之相同的结果print(json.dumps(mydict, indent=4))
Bre*_*arn 13
你不需要装饰器本身就可以做到这一点.只需定义一个新函数并调用它print:
import builtins
def print(*args, **kwargs):
builtins.print(json.dumps(*args, **kwargs, indent=4))
Run Code Online (Sandbox Code Playgroud)
您可以使用builtins如图所示的模块访问原始打印功能.
事情是print,除了它会让人感到困惑之外,这样做除了调用你的新功能之外并没有什么好处.
如果你想真正混淆你可以存储的人,可以将old_print = builtins.print你的新功能定义为my_print(访问原文old_print)然后再做builtins.print = my_print.那么你的修改后print实际上会取代常规print,甚至在其他对你的恶作剧一无所知的模块中.但这是一个更糟糕的想法.