Ссылка на первую часть.
Скрытая функция 1: List Stepping
Эта функция помогает выбирать с необходимым шаговым интервалом элементы из списка. Синтаксис здесь такой:
list[start:end:step]
start
: индекс первого контролируемого элемента в списке;end
: индекс первого элемента вне зоны контроля;step
: шаг сортировки.
Предположим, есть список с числами от 0 до 9, необходимо выбрать только четные числа. Сделать это можно так:
my_list: list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
even_numbers: list = my_list[::2] # [0, 2, 4, 6, 8]
Здесь мы не указываем начальный и конечный индексы. Поэтому Python считает стартовым первый элемент, а конечным — последний (т. е. весь список). Затем указываем шаг — 2. Поэтому Python начнет с первого элемента и вернет его (т. е. 0). Затем переместится на 2 шага (перейдет к 1, а затем к 2) и вернет результат (т. е. 2). Этот процесс повторяется до конца списка.
Еще один мощный трюк с пошаговым списком — инвертированный список через отрицательную индексацию.
my_list: list = [1, 2, 3, 4, 5]
reversed_list: list = my_list[::-1] # [5, 4, 3, 2, 1]
Скрытая функция 2: связывание операторов сравнения
В программировании часто приходится выполнять множественные сравнения как часть логического потока.
Предположим, есть переменная x, и мы хотим убедиться, что x больше 1, но меньше 10. Обычно делают что-то вроде:
x: int = 5
condition1: bool = x > 1 # проверить, что х больше 1
condition2: bool = x < 10 # проверить, что х меньше 10
print(condition1 and condition2) # True
Python позволяет объединить сравнения:
x: int = 5
print(1 < x < 10) # True
print(10 < x < 20) # False
Также можно сделать что-то вроде:
x: int = 5
print(5 == x > 4) # True
print(x < 10 < x*10 < 100) # True
Скрытая функция 3: комплексные/мнимые числа
Всем, кто изучал математику, знакомо понятие комплексных чисел. Интересная особенность Python, о которой многие не подозревают, заключается в том, что он полностью поддерживает комплексные числа. В математике для представления комплексного числа обычно используют символ i. В Python мы используем j или вызываем функцию complex()
.
# Создание комплексных чисел
z1 = 2 + 3j
z2 = complex(4, -2) # (4 -2j)
# Доступ к действительным и мнимым частям
print(z1.real) # 2.0
print(z1.imag) # 3.0
# Арифметика с комплексными числа
z3 = z1 + z2 # (6+1j)
z4 = z1 * z2 # (14+8j)
z5 = z1 / z2 # (0.1+0.8j)
# Сопряжение комплексного числа
z6 = z1.conjugate() # (2-3j)
Скрытая функция 4: доступ к последнему результату по символу “_”
Возможно, вы замечали, что многие программисты резервируют символ _
в качестве заполнителя некоторых переменных, которые не используются или не нужны в процессе выполнения программы.
Между тем (и многие об этом не знают), по умолчанию Python присваивает результат последнего выполнения переменной этому символу _
.
x: int = 5
y: int = 99
x + y # 104
print(_) # 104
Скрытая функция 5: распаковка аргумента
Предположим, есть некоторая произвольная функция:
def my_sum(a, b, c):
return a + b + c
Есть список из 3 чисел, которые нужно передать функции. Обычно пишут:
my_list = [1, 2, 3]
result = my_sum(my_list[0], my_list[1], my_list[2])
print(result) # 6
Вместо этого в Python можно сделать так:
result = my_sum(*my_list)
print(result) # 6
Символ *
распаковывает весь список и передает каждый элемент в качестве параметра функции. Далее также можно распаковать словарь с помощью **
.
# Пример распаковки аргумента словаря
def my_func(a, b, c):
print(f"a={a}, b={b}, c={c}")
my_dict = {'a': 1, 'b': 2, 'c': 3}
my_func(**my_dict)
Читайте также:
- Управление зависимостями в Python: файл pyproject.toml
- Bamboolib - одна из самых полезных библиотек Python
- 3 функции Python Matplotlib: повысьте информативность визуализации данных
Читайте нас в Telegram, VK и Дзен
Перевод статьи David Farrugia: 5 More Awesome Python Hidden Features — Part 2