#python #return #escaping
#python #Возврат #экранирование
Вопрос:
carriage_return = «Я буду использовать каретку rreturn»
работает, как ожидалось:
ввод
печать(carriage_return)
выходной сигнал
возврат используйте каретку
print(carriage_return, end = ‘n’)
возврат используйте каретку
не так, как ожидалось:
печать(carriage_return, end = «)
вывод (где текст, который должен следовать за «return»?)
Возврат
Я ожидал, что:
возврат используйте каретку
если я перейду к интерактивному сеансу python, я получаю:
, >>> print(carriage_return, end = «)
возврат>>> каретки
с моим курсором между стрелками и первым символом «a». (Как и ожидалось)
Так что здесь есть несоответствие.
Я что-то не понимаю в том, как работает возврат каретки или как работает оператор end=»?
Ответ №1:
r
возвращает символ в начало строки терминала
Таким образом, он переопределяет то, что уже есть в строке.
end=''
по умолчанию для команды печати end='n'
(поэтому вам не нужно добавлять новую строку после каждого оператора печати)
Таким образом, не печатая новую строку в интерактивной оболочке, вы просто помещаете курсор в конец того, что вы напечатали на терминале
>>> print("Hello", end='')
Hello>>>
>>> print("HellorI will override", end='')
I will override>>>
Если вы печатаете нормально, вот почему ваша следующая команда командной оболочки не заканчивается в середине строки.
>>> print("Hello", end='n')
Hello
>>> print("Hello")
Hello
>>>
>>> print("""Hello
... this is a multi line
... rexample""")
Hello
this is a multi line
example
>>>
Так почему же он отличается, когда вы запускаете его из скрипта? Это короткий ответ, что это не так. Это всего лишь часть того, как терминал, который вы используете, отображает выходные данные:
Пример из bash:
pi@raspberrypi:~ $ cat test.py
carriage_return = "I will use a carriagerreturn"
print(carriage_return)
print(carriage_return, end='n')
print(carriage_return, end='')
pi@raspberrypi:~ $ python test.py
return use a carriage
return use a carriage
returnpi@raspberrypi:~ $
Таким образом, из bash он просто переопределяет остальную часть того, что напечатано с помощью $USER@ $HOSTNAME
Тот же файл из терминала Windows:
Desktop> python .Stackoverflow.py
return use a carriage
return use a carriage
return use a carriage
Desktop>
Причина, по которой вы просто видите «return», заключается в том, как используемая вами оболочка определяет, когда начинать перевод строки.
Надеюсь, это поможет прояснить ситуацию.
Комментарии:
1. Я понимаю, почему интерактивная оболочка работает так, как она работает, моя проблема заключается в том, что я не использую интерактивную оболочку и вывод только «return».
2. Добавлено еще несколько примеров, но несоответствие, которое появляется на вашем экране, будет просто связано с тем, как оболочка / терминал, который вы используете, выбирает отображение отсутствия конца передаваемой строки.