Skip to content

Commit

Permalink
[merge from 3.5] - Issue27203 - Fix doctests Doc/faq/programming.rst.
Browse files Browse the repository at this point in the history
Patch contributed by Jelle Zijlstra.
  • Loading branch information
orsenthil committed Jun 5, 2016
2 parents 7a9ddd1 + 7749320 commit 2950776
Showing 1 changed file with 20 additions and 8 deletions.
28 changes: 20 additions & 8 deletions Doc/faq/programming.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1172,16 +1172,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
Expand Down Expand Up @@ -1665,9 +1677,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
Expand All @@ -1676,9 +1688,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


Expand Down

0 comments on commit 2950776

Please sign in to comment.