namespaces & indentation

Chris Schaller Chris.Schaller at
Fri Dec 22 15:56:04 EST 2000

Dear Pythoners...

  I always thought that I understood Python's scoping, but then I came across
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 do
with 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 program
after months of error-free running.

  Any comments?


More information about the Python-list mailing list