See More

changeset: 101738:fea14da8442d branch: 3.5 parent: 101736:97bdba07e361 user: Senthil Kumaran date: Sat Jun 04 20:07:34 2016 -0700 files: Doc/faq/programming.rst description: Issue27203 - Fix doctests Doc/faq/programming.rst. Patch contributed by Jelle Zijlstra. diff -r 97bdba07e361 -r fea14da8442d Doc/faq/programming.rst --- a/Doc/faq/programming.rst Sun Jun 05 02:57:47 2016 +0000 +++ b/Doc/faq/programming.rst Sat Jun 04 20:07:34 2016 -0700 @@ -1171,16 +1171,28 @@ >>> A = [[None] * 2] * 3 -This looks correct if you print it:: +This looks correct if you print it: + +.. testsetup:: + + A = [[None] * 2] * 3 + +.. doctest:: >>> A [[None, None], [None, None], [None, None]] But when you assign a value, it shows up in multiple places: - >>> A[0][0] = 5 - >>> A - [[5, None], [5, None], [5, None]] +.. testsetup:: + + A = [[None] * 2] * 3 + +.. doctest:: + + >>> A[0][0] = 5 + >>> A + [[5, None], [5, None], [5, None]] The reason is that replicating a list with ``*`` doesn't create copies, it only creates references to the existing objects. The ``*3`` creates a list @@ -1664,9 +1676,9 @@ next freshly created object is allocated at the same position in memory. This is illustrated by this example: ->>> id(1000) +>>> id(1000) # doctest: +SKIP 13901272 ->>> id(2000) +>>> id(2000) # doctest: +SKIP 13901272 The two ids belong to different integer objects that are created before, and @@ -1675,9 +1687,9 @@ to the object: >>> a = 1000; b = 2000 ->>> id(a) +>>> id(a) # doctest: +SKIP 13901272 ->>> id(b) +>>> id(b) # doctest: +SKIP 13891296