On Wed, Oct 22, 2014 at 2:05 AM, <busca...@gmail.com> wrote: > Em quarta-feira, 22 de outubro de 2014 06h29min55s UTC-2, ast escreveu: >> Hello >> >> >> >> Is there in Python something like: >> >> >> >> j = (j >= 10) ? 3 : j+1; >> >> >> >> as in C language ? >> >> >> >> thx > > without not: > j = [j+1, 3][j>=10] > with not: > j = [3, j+1][not (j>=10)]
This is not very readable, and eagerly evaluates the two list values. A proper ternary operator will not evaluate the unused candidate-result. This matters a little for performance, but matters more if one or both of the candidate results have side-effects. It's better to use "j = 3 if j >= 10 else j + 1". What you've suggested here was one of the ternary operator workarounds before a true ternary operator was introduced in 2.5. I don't use Python's ternary operator much though - I tend to find if+else more clear, and it shows up well in a debugger. The ternary operator tends to lead to long one-liners (especially if nested!), which are usually best avoided. I'd even go so far as to say that most uses of a ternary operator probably should be a small function. It's slower, but it lends itself to DRY and abstraction better. -- https://mail.python.org/mailman/listinfo/python-list