Steven D'Aprano <st...@pearwood.info> writes: > if condition: > print(1) > print(2) > else: > print(3) > print(4) > what value should it return? Justify your choice.
It could whatever value that the last call to print() returns. Lisp has worked like that since the 1950's. > What should be the return value of this statement? > > while True: > x += 1 > if condition: break It could return None, or break(val) could return val. > I don't think that "every statement is an expression" is conceptually > simpler at all. I think it is more difficult to understand. It hasn't been a problem in Lisp or its descendants, Erlang, Haskell, etc. I don't know about Ruby or Javascript. > But it is even harder to understand what it might mean for a while > loop to be a value, and the benefit of doing so seems significantly > less than compelling. It means that you get to use an incredibly simple and beautiful evaluation model. Have you ever used Lisp or Scheme? Give it a try sometime. Excellent free book: https://mitpress.mit.edu/sicp/full-text/book/book.html -- https://mail.python.org/mailman/listinfo/python-list