On Tue, Jan 24, 2012 at 10:24 AM, Ian Tickle <[log in to unmask]> wrote:
> reassuring air of finality! Maybe a Python expert will answer this
> but I've often wondered, what happens if as some editors do
> (particularly if as I do you have to use different editors at
> different times depending on where you are working, such as on Windows
> working remotely from home or Linux at work), you could have a mixture
> of space and tab characters in the file?
Yes, this can happen. In practice, one learns very quickly to
configure the text editors to prevent this kind of mix-up, i.e. by
always inserting spaces instead of tab characters. In vim, for
instance, you can do this:
set expandtab
set tabstop=2
For CCTBX, the rule is to use two spaces as the indentation (tabs
strictly forbidden), and despite having multiple active contributors,
this is almost never a problem. (The rule for most other Python
modules appears to be four spaces, which I personally find too wide.)
It becomes second nature after a while, just like adding a semicolon
at the end of each statement in C/C++/Java/etc. I agree that it seems
annoying and confusing at first, but if you've ever tried to edit
someone else's C or Perl code where the indentation was totally
inconsistent, you'll quickly learn to appreciate Python's style.
> So does Python automatically expand the tabs to the
> equivalent number of spaces or (as in data input) are they treated as
> single characters? And anyway how does Python know what tab stops my
> editors are set to and indeed how exactly my editors treat tabs?
Answers are "no" and "it doesn't", at least I don't think so. The
safest thing (especially if you need to copy and paste code from any
other module) is to never use literal tabs.
-Nat
|