On Sep 23, 8:50 pm, Neal Becker <[EMAIL PROTECTED]> wrote: > Aaron "Castironpi" Brady wrote: > > On Sep 23, 6:52 pm, Neal Becker <[EMAIL PROTECTED]> wrote: > >> In hindsight, I am disappointed with the choice of conditional syntax. I > >> know it's too late to change. The problem is > > >> y = some thing or other if x else something_else > > >> When scanning this my eye tends to see the first phrase and only later > >> notice that it's conditioned on x (or maybe not notice at all!). > >> Particularly if 'some thing or other' is long or complicated. > > > You're talking strictly about readability, which among other things is > > in the eye of the beholder, of course. Temporary variables can clean > > up some code, even if choosing names can be a hassle and it's more > > things to keep track of. Long lines and extra variables form a trade- > > off. You are writing a line with a conditional expression the value > > of which depends on something. What does it depend on, what is its > > value if that's true, and what is it if it's false? '...if...else...' > > only takes 6 characters... maybe you want more! > > > If you're looking for a strictly syntactic construct, you can always > > "fire blanks", or tracers, if the analogy's more accurate. > > > z= conditionally( x ) if b else y > > > This could serve as a gentle reminder, even where 'conditionally' > > returns its argument, i.e. is the identity function. You can always > > roll your own ternary with extra parameters too: > > > z= condition( b, x, y ) > > > Just don't confuse it with threading.Condition. > > > Otherwise, you're stuck with old syntax markers, and unless you > > wanted: > > > z= if b then x else y > > > You're out of options. You have to express it somehow. Did you want > > the condition first? Was there an alternative proposal you > > preferred? IINM if I'm not mistaken, > > > z= b and x or y > > > works just the same so long as x evaluates to True, as it will be > > tested. > > > Feel free to write your own from scratch, and we'll see how close > > Python can come to resembling it. > > > I suppose you can compare it to someone who stops listening before the > > word 'if', and completely misunderstands your statement. "Feed the > > dog if he's standing near the food dish" != "Feed the dog", which can > > of course lead to errors of both omission and commission (doing too > > little -or- too much). There's no way to fix that in a guaranteed > > way, except to say, "listen to the whole statement". > > > And strictly sarcastically, what did you want to do with reading the > > program? Why were you reading it? <snicker, ducks> > > I find I'm often tripped up by: > > x = Y (lots of constructor arguments....) if something ... > > on first glance, I don't notice the if. > > Why am I reading this? Umm, because I wrote it.
Put it somewhere you'll notice! -- http://mail.python.org/mailman/listinfo/python-list