[Python-checkins] cpython (merge 3.5 -> default): [merge from 3.5] - Issue27203 - Fix doctests Doc/faq/programming.rst.
senthil.kumaran
python-checkins at python.org
Sat Jun 4 23:08:12 EDT 2016
https://hg.python.org/cpython/rev/4a072fff6945
changeset: 101739:4a072fff6945
parent: 101737:e89eb7935ca9
parent: 101738:fea14da8442d
user: Senthil Kumaran <senthil at uthcode.com>
date: Sat Jun 04 20:08:10 2016 -0700
summary:
[merge from 3.5] - Issue27203 - Fix doctests Doc/faq/programming.rst.
Patch contributed by Jelle Zijlstra.
files:
Doc/faq/programming.rst | 28 ++++++++++++++++++++--------
1 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/Doc/faq/programming.rst b/Doc/faq/programming.rst
--- a/Doc/faq/programming.rst
+++ b/Doc/faq/programming.rst
@@ -1172,16 +1172,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
@@ -1665,9 +1677,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
@@ -1676,9 +1688,9 @@
to the object:
>>> a = 1000; b = 2000
->>> id(a)
+>>> id(a) # doctest: +SKIP
13901272
->>> id(b)
+>>> id(b) # doctest: +SKIP
13891296
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list