2012-06-12 2 views
2

Простого вопроса, я хотел бы добавить текст к передней части каждого print я называю, например, если я изложу текст hello и побежал это:прилагая к каждым печатным сообщениям

Был бы напечатать это :

hellohello there 
hello hi again 

есть ли способ сделать это без использования функции использовать, что вместо print?

+0

«стилизовать печать» не уверен, что я понимаю эту часть, не могли бы вы перефразировать? – Levon

+0

Я имел в виду создание функции, которая просто называлась 'print 'hello' + message', я бы хотел отредактировать фактическую команду' print'. – user1447941

+2

Почему вы хотите избежать использования этой функции? Что-то вроде 'def myPrint (text): print ('hello' + text') действительно способ для этого. – Junuxx

ответ

3

Вы можете отменить печать в соответствии с DevPlayer's post here on StackOverflow, слегка модифицирована здесь:

from __future__ import print_function 
# Note: If you are using Python 3 leave this line out 
# This must be the first statement before other statements. 
# You may only put a quoted or triple quoted string, 
# Python comments or blank lines before the __future__ line. 
import sys 

def print(*args, **kwargs): 
    """My custom print() function.""" 
    # Adding new arguments to the print function signature 
    # is probably a bad idea. 
    # Instead consider testing if custom argument keywords 
    # are present in kwargs 
    sys.stdout.write('hello') 
    return __builtins__.print(*args, **kwargs) 

print ("hello there") 
print (" hi again") 

[Редактировать] ... или как говорит DSM, вы могли бы избежать SYS вызова с этим:

from __future__ import print_function 
# Note: If you are using Python 3 leave this line out 
# This must be the first statement before other statements. 
# You may only put a quoted or triple quoted string, 
# Python comments or blank lines before the __future__ line. 

def print(*args, **kwargs): 
    """My custom print() function.""" 
    # Adding new arguments to the print function signature 
    # is probably a bad idea. 
    # Instead consider testing if custom argument keywords 
    # are present in kwargs 
    __builtins__.print('hello',end='') 
    return __builtins__.print(*args, **kwargs) 

print ("hello there") 
print (" hi again") 
+0

Это просто печатает 'hello' на новой строке перед каждым вызовом' print'. – user1447941

+0

Сделано исправление - попробуйте это вместо этого. –

+1

Вместо использования 'sys.stdout.write' вы можете просто передать аргумент' end = '' 'функции печати. – DSM

1

Вы не можете изменить инструкцию печати Python 2, но вы можете написать свой собственный файл-подобный объект и использовать его:

class PrefixedFile(object): 
    def __init__(self, f, prefix): 
     self.f = f 
     self.prefix = prefix 

    def write(self, s): 
     s = s.replace("\n", "\n"+self.prefix) 
     self.f.write(s) 

sys.stdout = PrefixedFile(sys.stdout, "hello: ") 

print "One" 
print "Two" 

Обратите внимание, что этот код не совсем работает, поскольку в первой строке отсутствует префикс и добавляется один в самом конце, но вы получаете идею! :)

+0

Вы можете с 2,6 до ... –

+1

@JonCage: вы можете изменить функцию * печати *, но сменить инструкцию print * нелегко. – EOL

+1

Да, ладно, ты меня туда :-) –

0

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

from __future__ import print_function 
# Note: If you are using Python 3 leave this line out 
# This must be the first statement before other statements. 
# You may only put a quoted or triple quoted string, 
# Python comments or blank lines before the __future__ line. 

def my_print(*args, **kwargs): 
    """My custom print() function.""" 
    # Adding new arguments to the print function signature 
    # is probably a bad idea. 
    # Instead consider testing if custom argument keywords 
    # are present in kwargs 
    print('hello', end='') 
    print(*args, **kwargs) 

Единственное различие с ответом Джона что вы не переопределяете встроенныйprint() («патч обезьяны»). Я выступаю за это вместо того, чтобы изменять print(), потому что это делает ваш код более удобным для обслуживания, поскольку все ожидают, что print() будет встроенным.

Использование функции print() вместо print заявление, в my_print(), дает greater flexibility.

+0

Я согласен с тем, что использование функции, названной иначе, намного безопаснее, но это не то, о чем попросил ОП ;-) –

+0

@JonCage: Да, он попросил заменить инструкцию print * *, и ни один из ответов не предлагает этого, потому что это сложно. :) – EOL

+1

Да, ладно, справедливая точка .. –

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