mirror of
https://github.com/python/cpython.git
synced 2024-12-15 12:54:31 +08:00
Issue27203 - Fix doctests Doc/faq/programming.rst.
Patch contributed by Jelle Zijlstra.
This commit is contained in:
parent
2daf8e7f76
commit
7749320142
@ -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
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user