Кисель в АйТи | AI, Python, технологии
3.4K subscribers
156 photos
5 videos
50 links
Я – Александр, и это мой авторский канал, на котором я пишу про AI, разработку и работу в айти.
Download Telegram
Пусть Python и считается самым простым языком для изучения, это не отменяет существования сотен тонкостей и подводных камней.

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

Так же на эту тему есть пара интересных примеров с .extend() и оператором += (украл одолжил с StackOverflow)

Пример №1
list1 = [5, 6]
list2 = [7, 8]

def get_list():
return list1

get_list().extend(list2) # Работает
get_list() += list2 # SyntaxError


Случай редкий, да и визуально может показаться, что всё нормально. Просто вспомним, что такие операторы нельзя использовать с функциями, а так же с объектами, которые не реализуют iadd и add.

Пример №2
my_tuple = ([1, 2], [3, 4], [5, 6])
my_tuple[0].extend([10, 11]) # works
my_tuple[0] += [10, 11] # TypeError


А всё почему? А потому, что`.extend()` изменяет список на месте, а += пытается создать новый список и присвоить его элементу кортежа, что невозможно, так как кортеж — неизменяемый.

#python #разработка
1👍10