Вы находитесь на странице: 1из 30

1

Introduction to Python

Syntax. Built-in types. Operators.


Python 2

• Динамический
• Интерпретируемый (?)
• Объектно-ориентированный (??)
• Функциональный (???)
• Мультипарадигменный :)
Реализации 3

• CPython
• PyPy
• IronPython
• Jython
Работа с интерпретатором 4

• REPL: read, eval, print, loop.


• help()
• dir()
Исполнение программ 5

$ cat hello.py
#!/usr/bin/env python
print(“Hello, world!”)

$ python hello.py
Hello, world!
Лексическая структура 6

• Python программа состоит из логических строк


• Для создания блочной структуры программы
используются отступы - табуляция или пробелы
• Не смешивайте их никогда!
• В любой непонятной ситуации читайте PEP8
Ключевые слова 7

False await else import pass


None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yield
Операторы и разделительные символы 8

+ - * ** / // % @
<< >> & | ^ ~
< > <= >= == !=

( ) [ ] { }
, : . ; @ = ->
+= -= *= /= //= %= @=
&= |= ^= >>= <<= **=
Комментарии 9

Однострочный комментарий:

# TODO: write test

Многострочный комментарий:

# The code below does some magic,


# which I don’t understand. You
# should not touch it.
10

Все сущности в исполняющейся Python программе -


объекты. У каждого объекта есть три свойства:

• Тип (type)
• Идентичность (identity)
• Значение (value)
Идентичность 11

• Не меняется в течении жизни объекта


• Можно узнать с помощью функции id()
• Оператор is используется для сравнения
идентичностей объектов
Тип 12

• Не меняется в течении жизни объекта


• Можно узнать с помощью функции type()
• class - механизм реализации типизации
• isinstance(obj, class) - отвечает на вопрос, является ли
объект экземпляром данного типа
Mutable и Immutable встроенные типы 13

• list • int, float, complex


• dict • str, bytes
• set • tuple
• bytearray
Литералы: str, bytes 14

• Кавычки “ ”, ‘ ’, “”” “””


• Префиксы (опционально): b, u, f, r
• Могут содержать escape последовательности unicode:
\uxxxx, \Uxxxxxxxx, \N{name}
Литералы: числа 15

• 42, 0xdeadbeef
• 3.14 , 1. , .1
• 1.23j
Конструирование встроенных контейнерных типов 16

• list:
>>> [1, 2, 3]

• set:
>>> {‘a’, ‘b’, ‘c’, ‘a’}

• tuple:
>>> (‘a’, 1, True)

• dict:
>>> {‘a’: 1, ‘b’: 2}
Базовые операции 17

• Доступ к атрибутам объекта:

>>> user.id
1

• Вызов callable объекта, например функции:

>>> len(‘Hello’)
5
Имена, переменные, присваивание 18

answer = 42
greeting = ‘Hello, world!’
person = {‘name’: ‘Random J. Hacker’,
‘age’: 25}

result = math.pi * r ** 2
a, b = b, a + b
first, *rest = range(10)
first, *rest, last = range(10) # Python 3
i, x[i] = 1, 2
Операции с коллекциями 19

• Проверка вхождения элемента: in, not in


• Конкатенация, мультипликация: +, *
• Subscription, slicing: [i], [start:stop], [start:stop:step]
• Augmented assignment: a[2] += 3
Освобождение памяти, сборка мусора 20

В основной реализации - CPython - для определения,


используется ли объект, ведется подсчет ссылок на него
(reference counting). Когда счетчик становится равным
нулю - объект может быть удален.
Приоритет операций 21

• группировка - (), [], {}


• возведение в степень - **
• умножение, деление
• сложение, вычитание
• битовые операции
• сравнения
• логические операции (not, and, or)

Операции с одинаковым приоритетом как правило


выполняются слева направо.
Chaining 22

x < y < z

это

x < y and y < z


Условные выражения if .. elif .. else 23

if expression1:
statement*
elif expression2:
statement*
else:
statement*
Вычисление в булевом контексте 24

Все True, кроме:

• False
• None
• numeric zero всех типов
• пустые контейнеры всех типов (str, tuple, list, dict, set и
т.д.)

NB: C custom types могут быть сюрпризы


Циклы, общий вид 25

while expression:
statement*

for var in sequence:


statement*
Циклы, примеры 26

x = 10
while x > 0:
print(x)
x -= 1

for x in range(10):
print(x)
Вычисление в булевом контексте 27

• break - прерывает выполнение цикла


• continue - переход к следующей итерации
• else - выполняется, если цикл завершен нормально, т.
е. не был прерван
Python 2 vs 3 28

• Строки: str, byte, bytearray


• print/print()
• range/xrange
• map, filter, zip
• Целочисленное деление - //
• Синтаксис raise
Slide title 29

Blank slide
Slide title 30

Blank slide