diff options
author | Tim Peters <tim.peters@gmail.com> | 2003-01-28 05:48:29 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2003-01-28 05:48:29 (GMT) |
commit | d97da80dd575b003b3b2bf4eae29c7a004afecfa (patch) | |
tree | 157d5c67b92e6cddf153acca7298f4964b52b676 /Lib/pickle.py | |
parent | ff57bff16ef081c8d8140ee5d46af1416304d655 (diff) | |
download | cpython-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.py | 41 |
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). |