2014-10-09 3 views
4

Как я могу обернуть print(), чтобы добавить произвольные строки в начало и конец вещей, которые передаются в качестве аргументов для печати?Python: пользовательская функция печати, которая завершает печать()

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

не работает. В основном я хочу, чтобы моя пользовательская функция xprint() работала как print(), но добавляла «XXX» к началу и концу каждого выхода.

ответ

0

Вы можете петлю через args и форматировать их по отдельности

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

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

Если вы просто хотите, чтобы обернуть все выражение в XXX, то вы можете сделать

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

Я думаю, что требуемый выход 'XXXhi йо 4XXX'. – chepner

+0

Хмм, это может быть и так. Я также добавлю это решение. – CoryKramer

9

будет работать на Python 2 и 3, когда нет аргументов в пользу ключевых слов

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

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

Для функции python 3 print() (или при использовании print_function от __future__ в python 2) также могут присутствовать аргументы ключевых слов. Для обеспечения этих пропускаются Используйте форму

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

Для Python3 это должно быть 'def xprint (* args, ** kwargs): ...', no? – wjandrea

+0

@wjandrea - Хорошая точка! Я отредактировал это с разъяснением. – MartyMacGyver

+1

В целом хорошее решение, но обратите внимание, что это не будет поддерживать un ascii unicode +, это не поддерживает печать, заканчивающуюся запятой, чтобы оставаться на одной строке. –

0

Как об этом:

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

выход является XXX hi yo 4 XXX

+0

на python 2.x это дает недопустимый синтаксис. –

Смежные вопросы