Почему b + = (4,) работает, а b = b + (4,) не работает, когда b является списком?

Если мы возьмем b = [1,2,3] и попробуем сделать: b+=(4,)

Он вернет b = [1,2,3,4], но если мы попробуем сделать b = b + (4,), это не сработает.

b = [1,2,3]
b+=(4,) # Prints out b = [1,2,3,4]
b = b + (4,) # Gives an error saying you can't add tuples and lists

Я ожидал, что b+=(4,) потерпит неудачу, так как вы не можете добавить список и кортеж, но это сработало. Поэтому я попытался b = b + (4,) рассчитывать получить тот же результат, но он не сработал.

75
задан M.K 7 October 2019 в 13:23
поделиться

1 ответ

Как это объяснило здесь , если бы array не реализует __iadd__, метод, эти b+=(4,) был бы просто неукомплектованным из b = b + (4,), но очевидно это не, таким образом array действительно реализует __iadd__ метод. По-видимому, реализация __iadd__ метод является чем-то вроде этого:

def __iadd__(self, x):
    self.extend(x)

Однако мы знаем, что вышеупомянутый код не является фактической реализацией __iadd__ метод, но мы можем принять и признать, что существует что-то как extend метод, который принимает tupple исходные данные.

1
ответ дан 24 November 2019 в 11:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: