Rustom Mody wrote: > On Tuesday, March 15, 2016 at 2:00:25 PM UTC+5:30, Peter Otten wrote: >> Rustom Mody wrote: >> >> > Others have answered some parts >> >>>> if x in x_list: >> > ... print("That is a fruit.") >> > ... else: >> > ... print("That is not a fruit.") >> > ... >> > >> > However one can distribute the print out of the if; Thus >> > >> >>>> "This is %s a fruit" % ("" if x in x_list else "not") >> >> Which of the two versions will most readers grasp at first sight? >> Which one is easier to modify so that it works for arbitrary attributes? >> Which one is easier to internationalize? > > I think you are saying that my (last) version is clever in a rather stupid > sort of way. Yes?
Well, yes ;) > Well if that is what someone recommends for serious programming then > guilty as charged > > But there is a world of difference between > - What one SHOULD (or not) do > - What one CAN do > > The first is about serious|professional software engineering > The second is about getting an education beyond basic to some more > familiarity > > I assumed that OP is in the noob stage and was welcome some learning. > So what I wanted to convey is not so much that such expressions are nice > to have in serious code. Rather that > 1. Like algebra has laws so does programming > 2. That these laws can be used to massage one program into another > 3. That expressions (like %-format) can occur elsewhere than in prints That (the % part) is a lesson for C programmers rather than newbies ;) > 4. That prints are usually unnecessary (and an abomination) They aren't. They are often misused by beginners when they occur where a function should return a value. > Not that 3 and 4 come out so well as 1,2 in the above example. > > However to answer your questions specifically. > > Internationalization: Terrible > Arbitrary attributes: not sure what you are referring to > Readability: Very much like beauty -- in the eye of the beholder > Some things are universally beautiful; some only in some cultural contexts > Likewise readability > > Partly people find if-expressions unreadable because they are not used to > them. > This is backward because expressions are as basic than statements -- if > anything more basic. I think the problem is not that you prefer a programming paradigm that is not Python's default -- it's that you crammed too many ideas into one example. It's probably most helpful to concentrate on your main point, e. g. (You can) Use an expression: >>> x = "flying saucer" >>> "This is a fruit" if x in x_list else "This is not a fruit" 'This is not a fruit' > It is *symmetric* Unfortunately understood as lopsided > More such symmetries in this table: > http://blog.languager.org/2016/01/primacy.html#expstat > > Partly python if-expressions are unreadable because they are backward > compared to if-statements. A minor syntactic nuisance but yes it does > impact readability Indeed. It's still better than "This is %s a fruit" % (x in x_list and "" or "not") The bug is intentional; the fix is of course "This is %s a fruit" % (x in x_list and "most likely" or "probably not") ;) -- https://mail.python.org/mailman/listinfo/python-list