namespaces & indentation

Alex Martelli aleaxit at
Fri Dec 22 23:59:33 CET 2000

"Chris Schaller" <Chris.Schaller at> wrote in message
news:920f54$m2f$1 at
> Dear Pythoners...
>   I always thought that I understood Python's scoping, but then I came
> that code:
> > def t(x):
> >   if x == 1:
> >     c = 'yeah'
> >   return c
> If I execute t(1), I'll get 'yeah', but otherwise there'll be an error
> message.  According to the indentation level c is only valid within the
> if-clause, but not on the outside.  So I guess, the indentation level only
> defines the lines of code that belong to the if-clause, but has nothing to
> with scopes.

Right!  Only modules, functions, and classes are/have scopes.

>   That's very confusing, I've already programmed a lot in Python, but only
> due to a program error (I forgot to initialize c at the beginning of the
> function - a common error) and an unsuccessful test this happened to a
> after months of error-free running.
>   Any comments?

Your unit tests apparently had scarce coverage if they never followed
this particular path.  When unit tests have insufficient coverage (a
common issue), any bug may lurk in the never-explored paths -- this
specific one is nothing special in this regard.

I don't recall -- which Python unit-test frameworks have coverage


More information about the Python-list mailing list