imageguy <imageguy1...@gmail.com> wrote: >Using py2.5.4 and entering the following lines in IDLE, I don't really >understand why I get the result shown in line 8. > >Note the difference between lines 7 and 10 is that 'else' clause >result enclosed in brackets, however, in line 2, both the 'c,d' >variables are assign correctly without the brackets being required. > >Any chance someone could enlighten me on the rules for tuple unpacking >as this seems inconsistent.
It's not the tuple unpacking that's burning you. It's simple operator precedence. >7) >>> c,d = n if n is not None else 0,0 >8) >>> print c,d >9) (22, 11) 0 >10) >>> c,d = n if n is not None else (0,0) >11) >>> print c,d >12) 22 11 As line 10 makes clear, line 7 is interpreted thus: c,d = (n if n is not None else 0) , 0 "c" gets bound to the result of the ternary (the tuple (22,11)), and "d" gets bound to 0. -- Tim Roberts, t...@probo.com Providenza & Boekelheide, Inc. -- http://mail.python.org/mailman/listinfo/python-list