Как установить префикс для всего вывода print () в python? - PullRequest
1 голос
/ 18 марта 2019

Я печатаю на консоли в Python.Я ищу один фрагмент кода, чтобы все печатные тексты после строки кода имели 4 пробела в начале.Например:

print('Computer: Hello world')
print.setStart('    ')
print('receiving...')
print('received!')
print.setStart('')
print('World: Hi!')

Вывод:

Computer: Hello world
    receiving...
    received!
World: Hi!

Это может быть полезно для вкладки всех выходных данных, содержащихся в функции, и настройки, когда вкладки выходных функций.Это возможно?

Ответы [ 2 ]

2 голосов
/ 18 марта 2019

Вы можете определить функцию print, которая сначала печатает ваш префикс, а затем внутренне вызывает встроенную функцию print. Вы даже можете настроить свою пользовательскую функцию print() для просмотра стека вызовов и, соответственно, определить, сколько пробелов использовать в качестве префикса:

import builtins
import traceback

def print(*objs, **kwargs):
    my_prefix = len(traceback.format_stack())*" "
    builtins.print(my_prefix, *objs, **kwargs)

Проверьте это:

def func_f():
    print("Printing from func_f")
    func_g()

def func_g():
    print ("Printing from func_g")

func_f()

Выход:

                    Printing from func_f
                     Printing from func_g

Возврат к встроенной функции print():

Когда вы закончите с пользовательской печатью и хотите начать использовать встроенную функцию print(), просто используйте del, чтобы «удалить» собственное определение печати:

del print
1 голос
/ 18 марта 2019

Почему бы не определить свою собственную пользовательскую функцию и использовать ее при необходимости:

def tprint(*args):
    print('    ', *args)

Она будет использоваться следующим образом:

print('Computer: Hello world')
tprint('receiving...')
tprint('received!')
print('World: Hi!')

Вывод:

Computer: Hello world
     receiving...
     received!
World: Hi!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...