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

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

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Локальный контекст

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

В данном случае в каждой из двух функций определяется локальная переменная name. И хотя эти переменные называются одинаково, но тем не менее это две разных переменных, каждая из которых доступна только в рамках своей функции. Также в функции say_hi() определена переменная surname, которая также является локальной, поэтому в функции say_bye() мы ее использовать не сможем.

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

Обращение к элементам в кортеже происходит также, как и в списке, по индексу. Индексация начинается также с нуля при получении элементов с начала списка и с -1 при получении элементов с конца списка, первая часть кода:

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

При необходимости мы можем разложить кортеж на отдельные переменные, третья часть:

🐍 Укус питона // 💬 Чат // #теория #кортежи
Что выведет этот код?
Anonymous Quiz
16%
love
34%
python
10%
bop
39%
None
Обновление данных

Для работы с бинарными файлами в Python может применяться модуль - shelve. Он сохраняет объекты в файл с определенным ключом. Давайте рассмотрим обновление данных для этого модуля.

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

🐍 Укус питона // 💬 Чат // #теория #shelve #данные
Что выведет этот код?
Anonymous Quiz
50%
1 2 3 4 5 6.
13%
1 2 3 4 5 6 7.
25%
error.
12%
None of these
Игнорирование значений

Если какой-то элемент коллекции не нужен, то обычно для него определяется переменная с именем _ (прочерк), смотрим пример:

Здесь нам не важен второй элемент кортежа, поэтому для него определяем переменную _. Хотя в реальности _ - такое же действительное имя, как name и company, вторая часть кода:

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

● Для замены в строке одной подстроки на другую применяется метод replace():

● replace(old, new): заменяет подстроку old на new

replace(old, new, num): параметр num указывает, сколько вхождений подстроки old надо заменить на new. По умолчанию num равно -1, что соответствует первой версии метода и приводит к замене всех вхождений.

🐍 Укус питона // 💬 Чат // #теория #строки
Что выведет этот код?
Anonymous Quiz
10%
2 3 -4 3
43%
2 3 -3 3.12
22%
2 4 -3 3
25%
2 3 -4 3.12
Параметры декоратора dataclass

С помощью параметров декоратор dataclass позволяет сгенерировать дополнительный шаблонный код и вообще настроить генерацию кода, смотрим код:

Рассмотрим базовые параметры:
● init: если равно True, то генерируется функция init(). По умолчанию равно True
● repr: если равно True, то генерируется функция repr(), которая возвращает строковое представление объекта. По умолчанию равно True
● eq: если равно True, то генерируется функция eq(), которая сравнивает два объекта. По умолчанию равно True
● order: если равно True, то генерируются функции lt (операция <), le (<=), gt (>), ge (>=), которые применяются для упорядочивания объектов. По умолчанию равно False
● unsafe_hash: если равно True, то генерируется функция hash(), которая возвращает хеш объекта. По умолчанию равно False

🐍 Укус питона // 💬 Чат // #теория #dataclass
Что выведет этот код?
Anonymous Quiz
17%
1 2 3.
61%
1 2.
12%
Syntax Error.
10%
Ничего из этого
Генерация исключений и оператор raise

Иногда возникает необходимость вручную сгенерировать то или иное исключение. Для этого применяется оператор raise. Например, сгенерируем исключение в примере:

Оператору raise передается объект BaseException - в данном случае объект Exception. В конструктор этого типа можно ему передать сообщение, которое затем можно вывести пользователю. В итоге, если number2 будет равно 0, то сработает оператор raise, который сгенерирует исключение. В итоге управление программой перейдет к блоку except, который обрабатывает исключения типа Exception.

🐍 Укус питона // 💬 Чат // #теория #исключения