Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3_Вимоги_1 / 09.03.12 / Python / 0_Мгновенный Python.doc
Скачиваний:
149
Добавлен:
08.06.2015
Размер:
108.54 Кб
Скачать

Import string

x = string.split (y)

или ...

from string import split

x = split (y)

Более подробно о модулях стандартной библиотеки, см. http://www.python.org/doc/lib . Там есть очень много полезного. Если вы хотите, чтобы ваша программа могла работать и как импортируемый модуль, и как независимая программа, то вы можете добавить в её конце строчку вида:

if __name__ == "__main__": go ()

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

#!/usr/bin/env python

Наконец, кратко упомянем важное понятие: исключения (exception).

Некоторые операции, такие как попытка деления на 0 или чтения из несуществующего файла, могут создавать состояние ошибки, или исключение. Вы даже можете делать свои собственные исключения и возбуждать (raise) их в подходящий момент. Если исключение никак не обрабатывается в программе, то она завершает свою работу с выдачей сообщения об ошибке. Вы можете избежать такого конца, применив оператор try/except . Например:

def safe_division (a, b): # безопасное деление a на b

try :

return a/b

except ZeroDivisionError: # стандартное исключение

#"деление на 0"

return None

ZeroDivisionError - это имя стандартного исключения ("Деление на 0"). В данном примере вы могли бы перед делением вставить проверку того, что b не равно 0. Но во многих случаях такая стратегия неприменима. И. кроме того, если бы у нас не было бы секции try в теле функции safe_division ("безопасное деление"), так что по справедливости нам пришлось бы назвать её unsafe_division ("опасное деление"), то мы всё равно смогли бы обработать это исключение следующим образом:

try:

unsafe_division (a, b)

except ZeroDivisionError:

print "Деление на 0 в функции unsafe_division"

В случаях, когда у вас обычно не должна возникать некоторая проблема, но в принципе она всё же может случиться, использование обработки исключений избавит вас от трудоёмкого тестирования и.т.п.

Ну вот и всё. Надеюсь, вы научились чему-то. Теперь идите и вступайте в игру . И помните девиз обучения языку Python: "Use the source, Luke" (пользуйся источниками, Василий Иванович) (перевод: изучайте всякий текст на языке Python, который попадёт вам в руки). Для начала, вот вам пример. Это хорошо известный алгоритм "быстрой сортировки" Хоара.

(Прим. перев. Для тех, кто не знает - я прилагаю к программе комментарий с описанием этого алгоритма, взятым из известной брошюрки Д. Кнута. Я добавил эту программу к статье в виде Приложения и, кроме того, вы можете загрузить qsort.py - отдельный файл с текстом программы. Запуск на выполнение - командой python qsort.py)

Одно примечание к этому программному примеру. Переменная done ("выполнено") контролирует, завершилось ли разбиение (partition) текущего подсписка относительно разбивающего элемента (pivot) , т.е. все ли элементы подсписка перемещены. Поэтому когда любой из двух внутренних циклов хочет завершить всю последовательность взаимных перестановок элементов, он присваивает done значение 1 и прерывает себя с помощью break . Почему внутренние циклы должны использовать вспомогательную переменную done? Потому, что когда первый внутренний цикл завершается по break , то начнёт или нет работу второй внутренний цикл зависит от того, завершился ли главный цикл, то есть от того, было ли done присвоено значение 1:

while not done:

while not done:

#циклы, пока не выполнится break

while not done:

#выполняется, только если в

#первом цикле done

#не присвоено значение 1

Эквивалентный, может быть, более ясный, но менее красивый вариант:

while not done:

while 1:

#циклы, пока не выполнится break

Соседние файлы в папке Python