2014-10-09 7 views
4

프린트 할 인자로 전달되는 것들의 처음과 끝에 임의의 문자열을 추가 할 수 있도록 print()를 어떻게 감쌀 수 있습니까?파이썬 : print()를 감싸는 커스텀 프린트 함수

def xprint(*args): 
    print("XXX", *args, "XXX") 
xprint("hi", "yo", 4) 

이 작동하지 않습니다. 기본적으로 내 사용자 지정 함수 xprint() print() 같은 작동하도록 있지만 모든 출력의 시작 부분과 끝에 'XXX'추가하십시오. 방금 XXX에서 전체 표현식을 포장 할 경우 args을 반복하고 그들에게 개별적으로

def xprint(*args): 
    for i in args: 
     print('XXX{}XXX'.format(i), end=' ') 

>>> xprint('hi', 'yo', 4) 
XXXhiXXX XXXyoXXX XXX4XXX 

를 포맷

답변

0

당신은 수, 당신은

def xprint(*args): 
    s = ' '.join(str(i) for i in args) 
    print('XXX{}XXX'.format(s), end=' ') 

>>> xprint('hi', 'yo', 4) 
XXXhi yo 4XXX 
+0

입니다 내가 원하는 출력이'요 4XXX'을 XXXhi 생각합니다. – chepner

+0

흠 그럴 수도 있습니다. 나는 그 해결책도 추가 할 것이다. – CoryKramer

9

파이썬이 위해 작동 할 수 있으며, 3 키워드 어구가없는 경우

def xprint(*args): 
    print("XXX"+" ".join(map(str,args))+"XXX") 

In [5]: xprint("hi", "yo", 4) 
XXXhi yo 4XXX 

파이썬 3 함수 (또는 print_function__future__에서 파이썬 2로 사용하는 경우)에 키워드 인수가있을 수 있습니다. 이러한 전달 사용에게 양식이 약

def xprint(*args, **kwargs): 
    print("XXX"+" ".join(map(str,args))+"XXX", **kwargs) 
+1

Python3의 경우,'def xprint (* args, ** kwargs) : ...'이어야합니다. – wjandrea

+0

@ wjandrea - 좋은 지적입니다! 나는 이것을 해명과 함께 편집했다. – MartyMacGyver

+1

전반적으로 좋은 해결책이지만 비 ASCII 유니 코드를 지원하지 않을 것이며 + 이것은 같은 행에 머물러있는 쉼표로 끝나는 인쇄를 지원하지 않습니다. –

0

어떻게 보장하기 위해 :

def xprint(*args): 
    args = ("XXX",)+args+("XXX",) 
    print(*args) 
xprint("hi", "yo", 4) 

출력 XXX hi yo 4 XXX

+0

on python 2.x 이것은 잘못된 구문을 제공합니다. –