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

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

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

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

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

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

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

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

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

🐍 Укус питона // 💬 Чат // #теория #list #iterable #данные
Что выведет этот код?
Anonymous Quiz
4%
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
Обращение к элементам кортежа

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

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

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

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