Kodomo

Пользователь

Уточнения к объектной модели питона

Контрольная работа

Предисловие: операция is проверяет, являются ли оба её аргумента одним и тем же объектом. Например,

   1 >>> class A(object):
   2 ...     pass
   3 >>> a = A()
   4 >>> b = a
   5 >>> c = A()
   6 >>> a is a
   7 True
   8 >>> a is b
   9 True
  10 >>> a is c
  11 False

Заполните пустые места в следующих диалогах с питоном:

   1 >>> "a" == "a"
   2 
   3 >>> "a" is "a"
   4 
   5 >>> "a" * 10000 == "a" * 10000
   6 
   7 >>> "a" * 10000 is "a" * 10000
   8 
   9 >>> x = "a"
  10 >>> y = x
  11 >>> x = x + "b"
  12 >>> x is y + "b"
  13 
  14 >>> [1] is [1]
  15 
  16 >>> x = [1]
  17 >>> y = x
  18 >>> x.append(2)
  19 >>> x == y
  20 
  21 >>> x is y
  22 
  23 >>> a = A()
  24 >>> a.x = 1
  25 >>> b = a
  26 >>> b.x = 2
  27 >>> a is b

PS. На этом примере мы видим, что невероятная ужасня творится в вопросе, являются ли две равные строки одним объектом или разными. Аналогично с кортежами. Отсюда мораль: операция is нужна не для них.