파이썬 3 print()
알고있는 바와 같이, 함수 그것은 전직에 대한 json.dumps(indent=4)
장식 파이썬의 내장 인쇄() 함수
에서 포장의 장식 된 버전을 만들 수 있습니다.
print(mydict)
를 호출하면 당신이 할 수있는 장식 자체가 필요하지 않습니다 print(json.dumps(mydict, indent=4))
파이썬 3 print()
알고있는 바와 같이, 함수 그것은 전직에 대한 json.dumps(indent=4)
장식 파이썬의 내장 인쇄() 함수
에서 포장의 장식 된 버전을 만들 수 있습니다.
print(mydict)
를 호출하면 당신이 할 수있는 장식 자체가 필요하지 않습니다 print(json.dumps(mydict, indent=4))
과 동일한 결과를 생성한다. 그냥 새로운 함수를 정의하고 그것을 print
전화 : 원래 인쇄 기능에 액세스 할 같이
import builtins
def print(*args, **kwargs):
builtins.print(json.dumps(*args, **kwargs, indent=4))
당신은 builtins
모듈을 사용할 수 있습니다.
실제로이 작업을 수행하면 사람들을 혼란스럽게하는 점을 제외하면 print
외에도 새로운 기능을 호출하는 것 이상의 효과를 얻지 못합니다.
당신이 정말로 (old_print
로 원본을 액세스하는) 당신이 old_print = builtins.print
를 저장 my_print
로 새로운 함수를 정의 할 수있는 사람을 혼동하고 builtins.print = my_print
을 로합니다. 그렇다면 수정 된 print
은 실제로 귀하의 헛소리에 대해 알지 못하는 다른 모듈에서도 실제로는 print
으로 바뀝니다. 그러나 그것은 더 나쁜 생각입니다.
'builtins' 모듈을 사용하여 주셔서 감사합니다. 실제로 매우 편리하고 영리한 솔루션입니다. – nehemiah
또는 pprint를 살펴보십시오. https://docs.python.org/3/library/pprint.html
아니요, print
은 내장 함수이며 내장 C 수준 클래스가 아니기 때문에 불가능합니다. This answer은 str
과 같은 내장 객체를 서브 클래스 화하고 그 중 하나의 메소드에 데코레이터를 적용하는 방법을 제공합니다.
@ BrenBarn의 대답은 어떻게 * 가능한지 보여줍니다. –
@AdamSmith Barn의 답변은 데코레이터를 사용하지 않습니다. 그것이 원래 질문 한 것입니다. –
장식 업체 정보 : https://gist.github.com/anonymous/c6ee1be4befc1c38d34cd02553b31945 –
gist에 대한 @Adam Smith에게 감사의 말을 전합니다.
import builtins
import functools
import json
orig_print = builtins.print
def indent4(f):
@functools.wraps(f)
def wrapped(*args, **kwargs):
return f(json.dumps(*args, **kwargs, indent=4))
return wrapped
@indent4
def print(*args, **kwargs):
return orig_print(*args, **kwargs)
왜 이것이 데코레이터가되어야합니까? –