В 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.
"""
Ответы
Ответ 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 нет эквивалента, но я просто закомментировал строки внизу: посторонние, но это то, что вы получаете, используя один способ управления всеми языками.