Подтвердить что ты не робот

В Python лучший способ подражать Perl __END__?

Я правильно понял, что у Python нет прямого эквивалента Perl __END__?

print "Perl...\n";

__END__
End of code. I can put anything I want here.

Одна мысль, которая пришла мне в голову, заключалась в использовании строки с тремя кавычками. Есть ли лучший способ достичь этого в Python?

print "Python..."

"""
End of code. I can put anything I want here.
"""
4b9b3361

Ответ 1

Предлагаемая форма тройной кавычки будет создавать строку python, тогда как Perl-парсер просто игнорирует что-либо после __END__. Вы не можете писать:

"""
I can put anything in here...
Anything!
"""
import os
os.system("rm -rf /")

Комментарии более подходят, на мой взгляд.

#__END__
#Whatever I write here will be ignored
#Woohoo !

Ответ 2

Блок

__END__
в perl датируется временем, когда программистам приходилось работать с данными из внешнего мира и любил хранить примеры этого в самой программе.

Трудно представить, что я знаю.

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

Наконец, культ Питтона, подобный ограничительности, кажется, оказывает реальное и утомительное влияние на мышление его защитников, если ваш единственный ответ на вопрос: "Зачем вам это нужно, когда вы могли бы сделать X?" когда X не так полезен, будьте спокойны ++.

Ответ 3

То, что вы просите, не существует. Доказательство: http://www.mail-archive.com/[email protected]/msg156396.html

Простое решение состоит в том, чтобы избежать любой "as \" и сделать обычную многострочную строку - см. Официальные документы: http://docs.python.org/tutorial/introduction.html#strings

(Кроме того, atexit не работает: http://www.mail-archive.com/[email protected]/msg156364.html)

Ответ 4

Hm, а что насчет sys.exit(0)? (предполагая, что вы import sys над ним, конечно)

Что касается того, почему это было бы полезно, иногда я сажусь, чтобы сделать существенное переписывание чего-то и хочу отметить мое место "хорошо до этой точки".

Используя sys.exit(0) временно, я ничего не знаю ниже, когда эта точка будет выполнена, поэтому, если есть проблема (например, ошибка сервера), я знаю, что должен был быть выше этой точки.

Мне нравится немного лучше, чем комментировать остальную часть файла, просто потому, что есть больше шансов совершить ошибку и раскомментировать что-то (блуждание клавиши в начале строки), а также потому, что лучше вставить 1 строку (который позже будет удален), чем изменить X-много строк, которые затем должны быть впоследствии изменены.

Но да, это расщепление волос; комментирование отлично работает... при условии, что ваш редактор поддерживает, легко комментируя регион, конечно; если нет, sys.exit(0) полностью!

Ответ 5

Python не имеет прямого эквивалента.

Зачем вам это нужно? Это не похоже на действительно замечательную вещь, когда есть более последовательные способы, как положить текст в конце в виде комментариев (что мы включаем произвольный текст в исходных файлах Python. Тройные строки цитируются для создания многострочных строк, не для текста, не связанного с кодом.)

Ваш редактор должен быть в состоянии сделать с помощью многих строк комментариев легкими для вас.

Ответ 6

Я использую __END__ все время по нескольким причинам. Я делал это так долго, что поставил (обычно перед exit('0');) вместе с подпрограммами BEGIN {}/END{} в силу привычки. Жаль, что у Python нет эквивалента, но я просто закомментировал строки внизу: посторонние, но это то, что вы получаете, используя один способ управления всеми языками.