Автор: CoolPython
Когда человек впервые видит в программе что-то вроде
_, v in my_dict.items(): pass
он обычно теряется. Что это за переменная _
?
В командной строке интерпретатора нижнее подчеркивание хранит значение последнего выражения. Пользоваться ей можно вот так:
>>> a + b 20 >>> _ 20 >>> _ * 2 40
В интерпретаторе это позволяет вообще не писать названия переменных и работать быстрее:
>>> list() [] >>> _.append(‘чепуха’) >>> _.append(‘небылица’) >>> _.append(‘выдумка’) >>> _ [‘чепуха’, ‘небылица’, ‘выдумка’]
При этом _ — абсолютно валидное имя. Настолько, что в скриптах его принято использовать для dummy-переменных, значениями которых пользоваться не собираются. Например:
for _ in range(4): print(“Шутка, повторенная дважды, становится в 4 раза смешнее”)
Или вот так:
_, c = ['чепуха', 'небылица', 'выдумка'] print(‘{} {}’.format(a, c)) 'чепуха, выдумка'
С другой стороны, если заводите переменную, значение которой вам не нужно, подумайте, стоит ли вообще это делать. В самом первом примере
for _, v in my_dict.items(): pass
можно было с тем же успехом использовать values()
.
В общем, в Python у переменной _
две функции:
- она хранит последнее вычисленное интерпретатором значение,
- и ее принято использовать, чтобы проигнорировать значение переменной.