If a name is bound in a block, it is a local variable of that block, unless declared as nonlocal. If a name is bound at the module level, it is a global variable. (The variables of the module code block are local and global.) If a variable is used in a code block but not defined there, it is a free variable.
Actually "global variables are a subset of free variables". The CPython implementation detail is if CPython marks a variable as "free", it means the marked variable is pure "free" but not "global" (in turn it means if a variable is free and global, is_free in CPython will return false).
CPython symtable.c module, SET_SCOPE says "An implicit global is a free variable for which the compiler has found no binding in an enclosing function scope"
Reference:
http://www.gossamer-threads.com/lists/python/dev/860658?do=post_view_flat#860658
http://stackoverflow.com/questions/12919278/how-to-define-free-variable-in-python