From 7749320142326acae62b865c16fa450e5fb5ceb7 Mon Sep 17 00:00:00 2001 From: Senthil Kumaran Date: Sat, 4 Jun 2016 20:07:34 -0700 Subject: [PATCH] Issue27203 - Fix doctests Doc/faq/programming.rst. Patch contributed by Jelle Zijlstra. --- Doc/faq/programming.rst | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/Doc/faq/programming.rst b/Doc/faq/programming.rst index b2ad7a7cc40..694753e5b9a 100644 --- a/Doc/faq/programming.rst +++ b/Doc/faq/programming.rst @@ -1171,16 +1171,28 @@ You probably tried to make a multidimensional array like this:: >>> 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 @@ address, it happens frequently that after an object is deleted from memory, the 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 @@ objects whose id you want to examine are still alive, create another reference to the object: >>> a = 1000; b = 2000 ->>> id(a) +>>> id(a) # doctest: +SKIP 13901272 ->>> id(b) +>>> id(b) # doctest: +SKIP 13891296