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

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

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

При обработке исключений также можно использовать необязательный блок finally. Отличительной особенностью этого блока является то, что он выполняется вне зависимости, было ли сгенерировано исключение, смотрим код:

Как правило, блок finally применяется для освобождения используемых ресурсов, например, для закрытия файлов.

🐍 Укус питона // 💬 Чат // #теория #исключения
Что выведет этот код?
Anonymous Quiz
12%
True 2
78%
True
9%
False
1%
False 2
Деструктуризация в циклах

Циклы в Python позволяют разложить коллекции на отдельные составляющие, первая часть кода:

Здесь мы перебираем список кортежей people. Каждый кортеж состоит из трех элементов, соответственно при переборе мы можем их передать в переменные name, age и company.

Другой пример - функция enumerate(). Она принимает в качестве параметра коллекцию, создает для каждого элемента кортеж и возвращает набор из подобных кортежей. Каждый кортеж содержит индекс, который увеличивается с каждой итерацией:

🐍 Укус питона // 💬 Чат // #теория #циклы #деструктуризация #распаковка
Что выведет этот код?
Anonymous Quiz
4%
Unexpected
9%
(3Check)
67%
CheckCheckCheck
20%
Syntax Error
Источник данных iterable

В качестве источника данных iterable может использоваться любой перебираемый объект, например, другой список, словарь и т.д. Например, функция range() возвращает все числя нуля до указанного порога не включая, смотрим:

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

🐍 Укус питона // 💬 Чат // #теория #list #iterable #данные
Что выведет этот код?
Anonymous Quiz
5%
3
67%
6
10%
Unexpected
19%
Error
Операции сдвига

Операции сдвига также производятся над разрядами чисел. Сдвиг может происходить вправо и влево.

• x<<y - сдвигает число x влево на y разрядов. Например, 4<<1 сдвигает число 4 (которое в двоичном представлении 100) на один разряд влево, то есть в итоге получается 1000 или число 8 в десятичном представлении.
• x>>y - сдвигает число x вправо на y разрядов. Например, 16>>1 сдвигает число 16 (которое в двоичном представлении 10000) на один разряд вправо, то есть в итоге получается 1000 или число 8 в десятичном представлении.

Таким образом, если исходное число, которое надо сдвинуть в ту или другую строну, делится на два, то фактически получается умножение или деление на два. Поэтому подобную операцию можно использовать вместо непосредственного умножения или деления на два. Например, смотрим код:

🐍 Укус питона // 💬 Чат // #теория #операции #числа
Что выведет этот код?
Anonymous Quiz
29%
4
20%
2
6%
1
45%
Error
Вставка значений в строку

Python позволяет встравивать в строку значения других переменных. Для этого внутри строки переменные размещаются в фигурных скобках {}, а перед всей строкой ставится символ f, смотрим пример:

В данном случае на место {userName} будет вставляться значение переменной userName. Аналогично на вместо {userAge} будет вставляться значение переменной userAge.

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

При двоичной системе каждый разряд числа может иметь только два значения - 0 и 1. Например, 0 в десятичной системе также будет равен 0 в двоичной системе, а 1 в десятичной системе будет соответствовать 1 в двоичной системе. Следующее число в десятичной системе - 2 в двоичной системе будет соответствовать 10. То есть, когда мы к 1 прибавляем 1, то результатом будет 10. И так далее.

Например, 5 в двоичном представлении 101 и имеет три разряда. Для вывода десятичного числа в двоичной системе можно применять спецификатор 0b, первая часть кода:

Без указания спецификатора функция print() выводит число в десятичной системе.

При этом Python позволяет сразу определять число в двоичной форме. Для этого число в двоичной форме указывается после префикса 0b, вторая часть кода:

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

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

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

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