The "identify this animal" example has a serious bug. This:
def identify(animal):
if animal.is_vertebrate():
return identify_vertebrate()
else:
return identify_invertebrate()
should be
def identify(animal):
if animal.is_vertebrate():
return identify_vertebrate(animal)
else:
return identify_invertebrate(animal)
Arguably this mix of OO and procedural code is bad as well. But less arguably, the initial example (with a simple identify function) was far better than the rewrite.
its subjective, arguably a style using ternary operator is better because it is composable - it evaluates as an expression, as opposed to a series of statements. it's something the lisp and functional programming people like - no implied dependency on order in which statements execute.
i dunno if this is valid python but it demonstrates the idea
this is part of "referential transparency", and once you get past "OMG parens" you realize its a Good Thing. parens are caused by a style preferring composition of expressions over executing statements, not lisp.