How can I do something like var foo = (test) ? "True" : "False"; in Python (specifically 2.7)?
            Asked
            
        
        
            Active
            
        
            Viewed 3.1k times
        
    64
            
            
         
    
    
        Karl Knechtel
        
- 62,466
- 11
- 102
- 153
 
    
    
        cynicaljoy
        
- 2,047
- 1
- 18
- 25
2 Answers
94
            PEP 308 adds a ternary operator:
foo = "True" if test else "False"
It's been implemented since Python 2.5
 
    
    
        Brian McKenna
        
- 45,528
- 6
- 61
- 60
- 
                    Wow. You beat me by 12 seconds and have character for character the same answer I did. – Jamie Wong Nov 05 '10 at 04:53
- 
                    Thanks, I will accept this answer as soon as SO allows it :) – cynicaljoy Nov 05 '10 at 04:54
-1
            
            
        This one looks a bit more like original ternary:
foo=a and b or c
 
    
    
        Frost.baka
        
- 7,851
- 2
- 22
- 18
- 
                    `f = a or b or c` works the same as in javascript (it returns the first truthy value). – Hakim Dec 31 '13 at 18:40
- 
                    6-1 Beware, there is a case where this does not work: if the condition `a` is True and `b` is any false value, such as False, 0, None, [], {} and so on, then the result is `c`, which is wrong (it should be `b`). For example, (True and [] or [1,2,3]) is equal to [1,2,3], while ([] if True else [1, 2, 3]) is equal to [], as it should be. I recommend sticking to the official ternary operator. – MiniQuark Mar 03 '17 at 15:03