🐍 Укус питона 🐍
2.61K subscribers
975 photos
17 videos
284 links
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

👽 Админ - @it_dashka
🔊 Купить рекламу: https://telega.in/c/byteofpython

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Вам нравится читать контент на этом канале?

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

Следуйте 3 простым шагам, чтобы сделать это:

1) Регистрируйтесь по ссылке: https://telega.in/c/byteofpython
2) Пополняйтесь удобным способом
3) Размещайте публикацию

Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его.
Конструкция try..except

try..except имеет следующее формальное определение, смотрим пример:

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

После ключевого слова except опционально можно указать, какое исключение будет обрабатываться (например, ValueError или KeyError). После слова except на следующей стоке идут инструкции блока except, выполняемые при возникновении исключения.

Рассмотрим обработку исключения на примере преобразовании строки в число, вторая часть примера:

При вводе строки вывод числа на консоль не происходит, а выполнение программы переходит к блоку except. Но при вводе правильного числа все выполняется нормально, исключение не возникает, и соответственно блок except не выполняется.

🐍 Укус питона // 💬 Чат // #теория #конструкции #try_except
Что выведет этот код?
Anonymous Quiz
36%
0 2 3 10
11%
32 34 35 42
28%
48 64 72 128
25%
48 144 192 480
Класс object. Строковое представление объекта

Начиная с 3-й версии в языке программирования Python все классы неявно имеют один общий суперкласс - object и все классы по умолчанию наследуют его методы.

Одним из наиболее используемых методов класса object является метод str(). Когда необходимо получить строковое представление объекта или вывести объект в виде строки, то Python как раз вызывает этот метод. И при определении класса хорошей практикой считается переопределение этого метода.

К примеру, возьмем класс Person и выведем его строковое представление, смотрим пример:

При запуске программа выведет что-то наподобие следующего, вторая часть кода:

Это не очень информативная информация об объекте. Мы, конечно, можем выйти из положения, определив в классе Person дополнительный метод, который выводит данные объекта - в примере выше это метод display_info.

🐍 Укус питона // 💬 Чат // #теория #классы #object
Что выведет этот код?
Anonymous Quiz
41%
TypeError
18%
(1, 5, 3, 4)
16%
1 TypeError
25%
6 TypeError
Класс object. Строковое представление. Продолжение.

Рассмотрим другой выход решения проблемы недостаточной информации об объекте - определим в классе Person метод str() (по два подчеркивания с каждой стороны), смотрим код:

Метод str должен возвращать строку. И в данном случае мы возвращаем базовую информацию о человеке. Если нам потребуется использовать эту информацию в других методах класса, то мы можем использовать выражение self.str()

И теперь консольный вывод будет другим, нижняя часть примера:

🐍 Укус питона // 💬 Чат // #теория #классы #object
Обращение к символам строки

И мы можем обратиться к отдельным символам строки по индексу в квадратных скобках, смотрим пример:

Индексация начинается с нуля, поэтому первый символ строки будет иметь индекс 0. А если мы попытаемся обратиться к индексу, которого нет в строке, то мы получим исключение IndexError. Например, в случае выше длина строки 11 символов, поэтому ее символы будут иметь индексы от 0 до 10.

🐍 Укус питона // 💬 Чат // #теория #данные #переменные
Что выведет этот код?
Anonymous Quiz
61%
2
12%
1
3%
0
24%
Error
Обращение к символам строки. Продолжение.

Чтобы получить доступ к символам, начиная с конца строки, можно использовать отрицательные индексы. Так, индекс -1 будет представлять последний символ, а -2 - предпоследний символ и так далее, первая часть кода:

При работе с символами следует учитывать, что строка - это неизменяемый (immutable) тип, поэтому если мы попробуем изменить какой-то отдельный символ строки, то мы получим ошибку, как в следующем случае, вторая часть кода:

Мы можем только полностью переустановить значение строки, присвоив ей другое значение.

🐍 Укус питона // 💬 Чат // #теория #данные #переменные
Можем ли мы использовать блок else для forцикла?
Anonymous Quiz
33%
Нет
68%
Да
Массивы в pattern matching.

В качестве шаблонов также могут выступать массивы. Подобным шаблоны также могут содержать либо конкретные значения, либо переменные, которые передаются элементы массивов, либо символ прочерка _, если элемент массива не важен.

В данном случае функция print_people принимает массив, который, как предполагается, состоит из трех элементов, рассмотрим их в следующей части.

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы
Что выведет этот код?
Anonymous Quiz
29%
True True
64%
True False
7%
False True
1%
False False
Массивы в pattern matching. Продолжение.

Первый шаблон предполагает, что элементы массива имеют определенные значения, смотрим первую часть примера:

В данном случае первый элемент массива должен представлять строку "Tom", второй - строку "Sam" и третий - строку "Bob".

Второй шаблон предполагает, что первый элемент массива должен быть равне строке "Tom", остальные два элемента могут иметь произвольные значения, вторая часть примера:

При этом значение второго элемента передается в переменную second, а значение третьего элемента не важно, поэтому вместо него применяется прочерк.

Третий шаблон соответствует любому массиву из трех элементов. При этом его элементы передаются в переменные first, second и third, третья часть кода:

В данном случае для соответствия любому из шаблонов массив должен был иметь три элемента. Но также можно определять шаблоны для массивов разной длины, последняя часть примера:

🐍 Укус питона // 💬 Чат // #теория #pattern_matching #массивы