On Sunday, July 24, 2016 at 6:09:40 AM UTC-7, BartC wrote: > On 24/07/2016 11:45, BartC wrote: > > On 24/07/2016 11:35, BartC wrote: > > > 'end' to terminate a block can be emulated of course: > > > > end=0 > > > > def fn(a): > > if a<=1: > > return 1 > > else: > > return fn(a-1) > > end > > end > > Actually this is a good example of how tabs can go wrong (and how the > tab system /is/ fragile - sorry but it is). > > I almost certainly wrote the above using 4 and 8 spaces for the tabs, > except for the 'return 1' where I must have used an actual tab by > mistake. (And I tested it now by doing just that, and posting in alt.test.) > > So the original /looked/ correct in my Thunderbird newsreader before I > posted. But after I posted, that tab somehow got changed to 4 spaces, as > it now looks wrong. > > In this instance, the result won't compile. But it's not hard to imagine > a much larger program where that change would go unnoticed, and the > result is still valid code**. > > Then anyone copying and pasting the posted code, would have a program > with a bug in it. > > Mysteriously however, Chris Angelico's reply which quoted my post, > showed a properly tabbed version! (Unless he fixed it manually.) > > (** Where working code has been posted, then Python will have picked up > inconsistencies where tabs and spaces are mixed. However take this code: > > def fn(): > <tab>if a: > <8 spaces>pass > > This looks fine in my editor when <tab> is expanded to 4 spaces: > > def fn(): > if a: > pass > > Python however doesn't like it (Python 2 doesn't anyway), because it > somehow assumes tabs expand to 8 spaces, so that the two indents look > like this to it: > > def fn(): > if a: > pass > > So I can see a lot of problems whenever tabs are expanded differently: > > a=1 > b=0 > > if a: > <tab>if b: > <tab><tab>print ("One") > <8 spaces>print ("Two") > > In my editor with 4-space tabs, it looks like the code will print > nothing as the two print lines are aligned within the 'if b:' block. But > in Python 2, it will print "Two". Python 3 more wisely reports the > inconsistency.) > > -- > Bartc
Don't use tabs. Ever. It's simple. -- https://mail.python.org/mailman/listinfo/python-list