Я собираюсь дать несколько простых функций для вычисления области многоугольника 2d. Это работает как для выпуклых, так и для вогнутых многоугольников. мы просто делим многоугольник на множество подтреугольников.
blockquote>//don't forget to include cmath for abs function struct Point{ double x; double y; } // cross_product double cp(Point a, Point b){ //returns cross product return a.x*b.y-a.y*b.x; } double area(Point * vertices, int n){ //n is number of sides double sum=0.0; for(i=0; i<n; i++){ sum+=cp(vertices[i], vertices[(i+1)%n]); //%n is for last triangle } return abs(sum)/2.0; }
Предлагаемая тройная цитата по-прежнему создает строку 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 !
Хм, а как насчет sys.exit(0)
? (предполагая, что вы делаете import sys
над ним, конечно)
Что касается того, почему это было бы полезно, иногда я сажусь, чтобы сделать существенное переписывание чего-либо и хочу отметить свою «хорошую до этого момента», place.
С помощью sys.exit(0)
во временном режиме я ничего не знаю ниже, что эта точка будет выполнена, поэтому, если есть проблема (например, ошибка сервера), я знаю, что она должна быть выше этой точки.
Мне нравится немного лучше, чем комментировать остальную часть файла, просто потому, что есть больше шансов совершить ошибку и расколоть что-то (блуждание клавиши в начале строки), а также потому, что кажется лучше для вставки 1 строки (которая позже будет удалена), чем для изменения X-многих строк, которые затем должны быть впоследствии изменены.
Но да, это расщепление волос; комментирование отлично работает ... при условии, что ваш редактор поддерживает, легко комментируя регион, конечно; если нет, sys.exit(0)
полностью!
sys.exit(0)
- это все, что ниже, которое все еще обрабатывается интерпретатором Python, и SyntaxError i> возникает, если у него нет действительного синтаксиса.
– pts
1 September 2017 в 17:18
Блок
__END__
в perl датируется временем, когда программистам приходилось работать с данными из внешнего мира и любил хранить примеры этого в самой программе.
Трудно представить, что я знаю.
Это было полезно, например, если у вас была движущаяся цель, такая как файл журнала оборудования с мутировавшими сообщениями из-за обновлений прошивки, где вы хотели сравнить старые и новые версии строки или вести заметки, не имеющие строгого отношения к операциям программ («Код кажется медленным в день х месяца каждый месяц») или, как упоминалось выше, справочный набор данных для запуска программы. Телескопы являются примером отрасли, где это было частым требованием.
Наконец, культ Питона, такой как ограниченность, кажется, оказывает реальное и утомительное воздействие на мышление его защитников, если ваш только ответ на вопрос: «Зачем вам это нужно, когда вы могли бы сделать X?» когда X не так полезен, будьте спокойны ++.
Python не имеет прямого эквивалента этому.
Зачем вам это нужно? Это не похоже на действительно замечательную вещь, когда есть более последовательные способы, как положить текст в конце в виде комментариев (вот как мы включаем произвольный текст в исходных файлах Python. Тройные строки цитирования предназначены для создания многострочных строк, не для текста, не связанного с кодом.)
Ваш редактор должен иметь возможность сделать с помощью многих строк комментариев легкими для вас.
То, о чем вы просите, не существует. Доказательство: http://www.mail-archive.com/python-list@python.org/msg156396.html
Простое решение состоит в том, чтобы избежать любого «как», и выполните обычную многострочную строку - см. официальные документы: http://docs.python.org/tutorial/introduction.html#strings
(Кроме того, atexit doesn ' t work: http://www.mail-archive.com/python-list@python.org/msg156364.html )
__END__
perl, включая perl-код, больше__END__
токенов, буквально ничего .. Вы не можете поместить нечетное количество трипсовых кавычек в строку трифонического питона (если вы не помните, чтобы ее избежать). Если вы поместите четное количество триплексных котировок и некоторый код python, он будет выполнен. – Tadeusz A. Kadłubowski 18 March 2010 в 18:34__END__
». На самом деле, нет. Дескриптор файлаDATA
может получить доступ ко всем после__END__
. – Alan Haggai Alavi 13 April 2011 в 10:12