python newbie

Neil Cerutti horpner at
Fri Nov 2 16:06:17 CET 2007

On 2007-11-02, Jim Hendricks <jim at> wrote:
> New to python, programming in 15 or so langs for 24 years.
> Couple of questions the tuts I've looked at don't explain:
> 1) global vars - python sets scope to the block a var is
> declared (1st set), I see the global keyword that allows access
> to global vars in a function, what I'm not clear on is does
> that global need to be declared in the global scope, or, when
> 1st set in a function where it is listed as a global, does that
> then declare the necessary global.

Names that are assigned in an assignment statement are assumed to
be defined in the current scope.

Names that are assigned to in a function are considered local
variables to that function. This allows them to be faster to
access than other attributes or global variables (which are just
attributes of a module).

def foo():
  x = 7

In function foo x is a local variable. This is true even if there
is an x defined in foo's enclosing scope.

x = 5

def foo():
  x = 7

x is a local variable, which shadows the module scope (global) x.

x = 5

If x is referenced, but not assigned to, then Python does not
create a local variable for it, and normal lookup rules will
cause x to be found in the enclosing scope of the bar function,

def bar():
  print x
In bar, the x name refers to the global x.

In order to inform Python that you would like to make
modifications to a global variable in a function, you use the
global statement to declare your intation. This overrides
Python's assumption that that name is a local variable.

x = 5

def foo2():
  global x
  x = 7

> 2) Everything is an object.  So then, why the distinction between 
> functions/variables and fields/methods.  If a module is an object, would 
> not every function be a method of that module and every variable be a 
> field of that module?

You are almost correct. Every identifier/name in Python is
conceptually an attribute of an object. But identifiers in Python
are not typed. It is the objects that they refer to that are

Neil Cerutti

More information about the Python-list mailing list