TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #12 · 10 јан.

На заметку начинающим. Оператор for..in имеет необязательный блок else. Как это работает? Этот блок выполняется только если итерация завершилась успешно, пройдя все элементы. Чтобы блок else не выполнился, итерация должна прерваться с помощью break. Зачем это нужно? Предполагается, что такая конструкция нужна для определения значения по умолчанию, в случае если мы ищем нужное значение в цикле. Как только необходимые данные найдены, выходим из цикла с помощью break. Если ничего не нашли, то выполняется блок else, в котором выполняем альтернативные действия. Чем полезно? В целом, пишется более лаконично (читай питонично) Позволяет сократить время вычислений, если получение дефолта достаточно затратная процедура. Например, есть такой код: value = get_default() for i in array: res = get_new_value(i) if res: value = res break В этом примере мы сначала создаем значение по умолчанию, потом в итерации получаем нужный параметр. Если get_new_value() не вернула новое значение, блок if никогда не сработает и остается значение по умолчанию. Но что, если функция get_default() занимает слишком много времени или не должна вызываться просто так? Тогда написать можно иначе: value = None for i in array: res = get_new_value(i) if res: value = res break if value is None: value = get_default() А с блоком else можно записать короче for i in array: res = get_new_value(i) if res: value = res break else: value = get_default() А тех кто на Python3.8+, еще короче: for i in array: if (res:=get_new_value(i)): value = res break else: value = get_default() Вероятно, можно такую логику записать еще короче, но это уже другая история #tricks

Hashtags

Резултати

Пронајдени 1 слични објави

Пребарај: #tricks

当前筛选 #tricks清除筛选
sudo recast

@sudo_recast · Post #918 · 17.04.2025 г., 09:47

A useful command when you encounter conflicts while cherry-picking: tig HEAD $(git rev-parse CHERRY_PICK_HEAD 2>/dev/null) -- $(git diff --name-only --diff-filter=U | head -1) #tricks@sudo_recast

Hashtags