summaryrefslogtreecommitdiffstats
path: root/Lib/pickle.py
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2003-01-28 05:48:29 (GMT)
committerTim Peters <tim.peters@gmail.com>2003-01-28 05:48:29 (GMT)
commitd97da80dd575b003b3b2bf4eae29c7a004afecfa (patch)
tree157d5c67b92e6cddf153acca7298f4964b52b676 /Lib/pickle.py
parentff57bff16ef081c8d8140ee5d46af1416304d655 (diff)
downloadcpython-d97da80dd575b003b3b2bf4eae29c7a004afecfa.zip
cpython-d97da80dd575b003b3b2bf4eae29c7a004afecfa.tar.gz
cpython-d97da80dd575b003b3b2bf4eae29c7a004afecfa.tar.bz2
save_tuple(): So long as the charter is rewriting for clarity, the snaky
control flow had to be simplified.
Diffstat (limited to 'Lib/pickle.py')
-rw-r--r--Lib/pickle.py41
1 files changed, 20 insertions, 21 deletions
diff --git a/Lib/pickle.py b/Lib/pickle.py
index 6f4ee5c..02288d8 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -458,27 +458,26 @@ class Pickler:
def save_tuple(self, object):
write = self.write
- save = self.save
- memo = self.memo
proto = self.proto
- if proto >= 1:
- n = len(object)
- if n <= 3:
- if not object:
- write(EMPTY_TUPLE)
- return
- if proto >= 2:
- for element in object:
- save(element)
- # Subtle. Same as in the big comment below.
- if id(object) in memo:
- get = self.get(memo[id(object)][0])
- write(POP * n + get)
- else:
- write(_tuplesize2code[n])
- self.memoize(object)
- return
+ n = len(object)
+ if n == 0 and proto:
+ write(EMPTY_TUPLE)
+ return
+
+ save = self.save
+ memo = self.memo
+ if n <= 3 and proto >= 2:
+ for element in object:
+ save(element)
+ # Subtle. Same as in the big comment below.
+ if id(object) in memo:
+ get = self.get(memo[id(object)][0])
+ write(POP * n + get)
+ else:
+ write(_tuplesize2code[n])
+ self.memoize(object)
+ return
# proto 0, or proto 1 and tuple isn't empty, or proto > 1 and tuple
# has more than 3 elements.
@@ -486,7 +485,7 @@ class Pickler:
for element in object:
save(element)
- if object and id(object) in memo:
+ if n and id(object) in memo:
# Subtle. d was not in memo when we entered save_tuple(), so
# the process of saving the tuple's elements must have saved
# the tuple itself: the tuple is recursive. The proper action
@@ -498,7 +497,7 @@ class Pickler:
if proto:
write(POP_MARK + get)
else: # proto 0 -- POP_MARK not available
- write(POP * (len(object) + 1) + get)
+ write(POP * (n+1) + get)
return
# No recursion (including the empty-tuple case for protocol 0).