Re:What's Coming in Python 3.8
by baq on Wednesday July 17, 2019 @06:21PM
(#20464631)
understanding lines in isolation is precisely besides the point here, because the code pattern has to be understood as a whole.
[ Parent
| on HN ]
Re:What's Coming in Python 3.8
by chrisseaton on Wednesday July 17, 2019 @06:25PM
(#20464664)
I don’t see why. ‘Assign x’ and ‘is x truthy’ can be understood separately. Worry about what x is being assigned. Then worry about whether its value is truthy.
like I said, the whole pattern is more than two lines. the pattern is actually assign-test-fallback-test-fallback-test-etc.
to quote the PEP:
reductor = dispatch_table.get(cls)
if reductor:
rv = reductor(x)
else:
reductor = getattr(x, "__reduce_ex__", None)
if reductor:
rv = reductor(4)
else:
reductor = getattr(x, "__reduce__", None)
if reductor:
rv = reductor()
else:
raise Error(
"un(deep)copyable object of type %s" % cls)
becomes: if reductor := dispatch_table.get(cls):
rv = reductor(x)
elif reductor := getattr(x, "__reduce_ex__", None):
rv = reductor(4)
elif reductor := getattr(x, "__reduce__", None):
rv = reductor()
else:
raise Error("un(deep)copyable object of type %s" % cls)