On 11/23/20 12:05 PM, Chris Angelico wrote:
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.

Ah, of course.  Thank you for correction.

--
~Ethan~
_______________________________________________
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/KEAZIHH5VVPS4LMBHDGDWIJZF43K5OY6/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to