Differences between revisions 2 and 3
Revision 2 as of 2005-01-20 15:36:04
Size: 911
Editor: 207
Comment:
Revision 3 as of 2005-01-20 22:58:07
Size: 1056
Editor: 212-32-244-232
Comment: PEP 308/ternary operator discussion
Deletions are marked like this. Additions are marked like this.
Line 39: Line 39:

= Discussion =

Please see http://python.org/peps/pep-0308.html and google for discussions about the ternary operator (if you haven't yet).

TableOfContents

The Problem

Python is sorely missing an if statement that:

  • computes and takes the value of A if and only if the predicate is true
  • computes and takes the value of B if and only if the predicate is false

In C and its derivitives,

predicate ? A : B 

This is extremely useful in programming and helps avoid copy and paste assignments. This is an example of poor code, because the assignment logic "x=" is copied and pasted, violating the software maintainbility and readability principle of OnceAndOnlyOnce:

if test:
   x=sin(cos(x))
else:
   x=cos(sin(x))

See also SwitchStatement

Current Python Idioms

There are a few ways in Python do achieve the evaluation only of the statement used when the predicate is true:

Proposed Solutions

If always returns a value

x = if test:
    A()
 else:
     B()

Discussion

Please see http://python.org/peps/pep-0308.html and google for discussions about the ternary operator (if you haven't yet).

IfStatementWithValue (last edited 2009-03-30 21:57:55 by dhcp128-33-22-52)

Unable to edit the page? See the FrontPage for instructions.