On Fri, Apr 5, 2013 at 10:07 PM, Timothy Madden <terminato...@gmail.com> wrote:
>
> On 06.04.2013 03:35, Chris Angelico wrote:
>>
>> On Sat, Apr 6, 2013 at 11:22 AM,  <terminato...@gmail.com> wrote:
>>>
>>> On Saturday, April 6, 2013 1:42:15 AM UTC+3, Ian wrote:
>>> [...]
>>>>
>>>> The "def" line has four spaces.  The "for" line then has a hard tab.
>>>> This is ambiguous.  If the hard tab is assumed to have a width of four
>>>> spaces, then they are at the same indentation level.  If it is assumed
>>>> to have a width of eight spaces, then they are not.
>>>
>>> [...]
>>>
>>> The correct tab stop positions have always been at 8 character columns 
>>> apart.
>>> The "ambiguity" was introduced by editors that do not follow the default 
>>> value set in hardware like printers or used by consoles and terminal 
>>> emulators.
>>>
>>> And now python forces me out of using any tab characters at all. I believe 
>>> I should still have a choice, python should at lest give an option to set 
>>> tab size, if the default of 8 is ambiguous now.
>>
>>
>> If you're indenting four spaces per level, then indent four spaces per
>> level. The code you posted would work perfectly if the indentation is
>> four spaces, then eight spaces, then twelve spaces. The problem is
>> that you have a stupid editor that's enforcing tabs instead of certain
>> multiples of spaces - get one that'll keep them all as spaces and you
>> won't have a problem.
>
>
> My editor is not the problem, of course, this is about what I think is right. 
> I think I should be given the option to use tabs as I always have, and at 
> least to use them with the default tab size, as python 2 used to.
>
>
>> Or use actual tabs, and set the displayed tab width to whatever you
>> feel like. That works, too. Neither option causes any problems with
>> any sane tools.
>
>
> Well this is the problem, the tab size is not "whatever I like", tab stops 
> are 8 character columns apart (default).
>
> Changing the tab size from this default is what makes the code incompatible, 
> not the tabs themselves. So the solution is simple: do not change tab size 
> from the default.
>
> People say I can use tabs all the way, just set them to the indent I want.
>
> Well, I always had my indent independent of the tab size. Which is the way it 
> should be, after all, since one can indent with or without tabs, so indent 
> should not be tied to them.
>
> But now I can not; python no longer lets me do that.
>
> Tab size should be 8, so now python 3 says: either indent at 8 with tabs, 
> either drop tabs and indent with spaces (just the same as if tabs are not 
> allowed).
>
> But that is so wrong. I can indent at 4 (or any value), and still use tabs, 
> as long as the interpreter knows tab stops are 8 columns apart. There is no 
> "ambiguity" and no way to change the meaning of the code.
>
> So as a comparison we have:
>
>  - the good old rules
>         - python has use the default tab stops of 8 columns
>         - indent is independent of tab stops
>
>  - the new rules
>         - python is independent of the tab stops
>         - indent is now tied to the tab stop, so users have to :
>                 - use non-default tab size (8 is too much), or
>                 - drop tabs altogether
>
> The new rules may look flexible at first sight, but the net effect they have 
> is they push me to use non-default tab size (which is not good), or drop the 
> tabs, which I could have used before python 3 just fine.
>
>
> Thank you,
> Timothy Madden

http://www.xkcd.com/1172/
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to