Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 [ 13 ] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

5.7 Подробнее об условиях

Помимо описанных ранее операторов сравнения, существует еще несколько условных операторов.

Операторы in и not in проверяют, есть указанное значение в последовательности. Операторы is и is not определяют, ссылаются ли две переменные на один и тот же объект. Все приведенные здесь операторы имеют одинаковый приоритет, который ниже, чем у арифметических операторов.

Логические выражения могут быть сцеплены: например, a < b == c проверяет, меньше ли a чем b и равны ли b и с.

Логические выражения можно группировать с помощью логических операторов and и or, а также результат можно инвертировать оператором not. Все логические операторы имеют меньший приоритет, чем операторы сравнения. Среди логических операторов, not имеет наибольший приоритет и or - наименьший. Таким образом, A or not B and C эквивалентно A or ((not B) or C). Безусловно, можно использовать скобки для определения порядка вычисления.

Аргументы логических операторов and и or вычисляются справа налево до тех пор, пока результат не будет определен. Например, если выражения A и C истинны, но B ложно, в A and B and C выражение C вычисляться не будет. Вообще говоря, возвращаемое значение операторов and и or является не логическим, а равно значению последнего вычисленного аргумента.

Можно присвоить результат сравнения или логического выражения переменной:

>>> string1, string2, string3 = \

... , Trondheim, Hammer Dance

>>> non null = string1 or string2 or string3

>>> non null

Trondheim

Обратите внимание, что, в отличие от C, присваивание не может находиться внутри выражения. Такое ограничение позволяет избежать ошибок, типичных для программ на C: использование = вместо ==.

>>> tel

{guido: 4127, irv: 4127, jack: 4098} >>> tel.keysO

[guido, irv, jack] >>> tel.has key(guido)



Объекты-последовательности можно сравнивать с другими объектами того же типа. Сравнение производится лексикографически: сначала сравниваются первые элементы последовательностей, и, если они отличаются, то результат их сравнения определяет результат; если они равны, сравниваются следующие элементы и т. д., пока не будет определен результат или одна из последовательностей не будет исчерпана. Если два элемента сами являются последовательностями одного типа, то лексикографическое сравнение выполняется рекурсивно. Если все элементы двух последовательностей в результате сравнения оказываются равными, то последовательности считаются равными. Если одна из последовательностей является началом другой, то меньшей считается последовательность с меньшим количеством элементов. Лексикографический порядок строк определяется порядком следования ASCII символов. Приведем несколько примеров сравнения последовательностей одинакового типа:

(1, 2, 3) < (1, 2, 4)

[1, 2, 3] < [1, 2, 4]

ABC < С < Pascal < Python

(1, 2, 3, 4) < (1, 2, 4)

(1, 2) < (1, 2, -1)

(1, 2, 3) == (1.0, 2.0, 3.0)

(1, 2, Caa, ab)) < (1, 2, (abc, a), 4)

Заметим, что сравнение объектов различного типа допустимо. Результат будет вполне определенным, однако не следует на него полагаться - правила сравнения объектов различного типа могут измениться в следующих версиях языка. Числа сравниваются в соответствии с их значениями, так 0 равен 0.0, и т. д.

5.8 Сравнение последовательностей



Глава 6

Модули

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

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

6.1 Создание и использование модулей

Модуль - файл, содержащий определения и другие инструкции языка Python. Имя файла образуется путем добавления к имени модуля суффикса (расширения) .py . В пределах модуля, его имя доступно в глобальной переменной name . Например, используя Ваш любимый текстовый редактор, создайте в текущем каталоге файл с именем fibo.py следующего содержания:

"\

Генерация и вывод чисел Фибоначчи

def fib(n):

Выводит последовательность чисел Фибоначчи, не превышающих n

a, b = 0, 1

while b < n: print b, a, b = b, a+b

def fib2(n):

Возвращает список, содержащий числа ряда Фибоначчи, не превышающие n



0 1 2 3 4 5 6 7 8 9 10 11 12 [ 13 ] 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145