On Tue, Nov 24, 2020 at 7:00 AM Ethan Furman <et...@stoneleaf.us> wrote: > > On 11/23/20 11:06 AM, Larry Hastings wrote: > > On 11/23/20 8:15 AM, Brian Coleman wrote: > >> def process(root_node: Node): > >> def process_node(node: Node): > >> if isinstance(node, StringNode): > >> return node.value > >> elif isinstance(node, NumberNode): > >> return float(node.value) > >> elif isinstance(node, ListNode): > >> return [process_node(child_node) for child_node in > node.children] > >> elif isinstance(node, DictNode): > >> return {key: process_node(child_node) for key, child_node in > node.children} > >> else: > >> raise Exception('Unexpected node') > > > > You don't need the "else". > > Without the "else" errors will pass silently. > > > And you can change all your "elif"s into "if"s too. > > On average, doubling your comparisons and therefore becoming slower.
I think the implication is that, since all the successful if statements go into returns, you can leave off the "else" and just put the "raise" immediately. It's a special case that applies ONLY to situations where the pattern matching is the entire purpose of the function. ChrisA _______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/5XN74AAVN2MITMG574LNCDBZJCP2LN76/ Code of Conduct: http://python.org/psf/codeofconduct/