4. Операторы.
Арифметические
- +, -, *, /, % - как обычно.
- / - для целых как в Си - floor(a/b).
- Внимательнее с / - зависит от типа переданной переменной (int vs float).
**
- возведение в степень
Сравнение
- ==, <, <=, >, >= - как обычно
- a < b < c - составное сравнение.
- Составное сравнение вычисляется лениво и могут не все выражения вычислиться.
- Результат bool().
Логические
- and - логическое и
- or - логическое или
- not - унарное отрицание
- Результат and и or не обязательно bool() и на вход не обязательно bool() - подробности ниже.
- Все пустые значения приводятся к False (“”, 0, None, 0.0, [], and {}), непустые - к True.
- Помнить и понимать, что and и or вычисляются лениво.
and
- Если любое из значений False (или приводится к False), то and вернёт первое такое значение.
- Если все значения True (или приводятся к True), то and вернёт последнее такое значение.
or
- Если любое из значений True (или приводится к True), то or вернёт первое такое значение.
- Если все значения False (или приводятся к False), то or вернёт последнее такое значение.
Бинарные
- & - побитовое и
- | - побитовое или
- ^ - исключающее или
- << и >> - сдвиги
Условные
- if condition:
- elif condition: - не обязателен
- else: - не обязателен
- Составные многострочные условия можно заключать в скобки.
- Сложные условия лучше заносить в переменные и проверять их.
# conditions
a = 3
if a > 2:
print "a > 2"
if a > 3:
print "a > 3"
elif a < 1:
print "a < 1"
else:
print "1 <= a <= 3"
s = "abcdefgh"
is_looks_like_alphabet = s.startswith("abc") or s.endswith("xyz")
if is_looks_like_alphabet:
print "Hmm, is it an alphabet?"
a > 2
1 <= a <= 3
Hmm, is it an alphabet?
Циклы
- while condition: - обычный цикл while
- for elem in iterable: - цикл for как итерирование
- есть continue и break
- range([start,] stop[, step]) - для задания iterable промежутка.
- xrange() - аналог range() не создающий коллекцию в памяти.
- можно поставить else в конце - выполнится, если не бы break - но лучше не использовать, т.к. сложнее читать.
Особые
- in - вхождение элемента в коллекцию.
- is - проверка идентичности двух объектов.
- Переменные должны указывать на один и тот же объект, а не только иметь одинаковое значение.
- is принято использовать для сравнения с None.
- del - удаление
- переменной (больше имя не ссылается на значение)
- элемента коллекции или части коллекции (срез)
- pass
- ничего не делает (nop)
- удобно для создания наброска набора функций или иерархии классов