[Tutor] email validation

Danny Yoo dyoo at hashcollision.org
Sat Aug 1 23:10:03 CEST 2015


All your function definitions should be defined with 'def' at the
leftmost margin.

However, the line in your program that starts with "def
open_existing_file()..." is not flush with the margin.  Python has,
subsequently, thought that the definition of the function is scoped
locally.  Move the beginning of the definition line "def
open_existing_file()" so that it's not indented.

Conceptually, what's happening is that you've accidentally written a
locally-scoped function definition, which beginner programs do not
typically do.  The following program demonstrates:

---------------------------------------------------
def bigFunction():
    def nestedFunction():
        print("nested")

    ## at this point forward, nestedFunction can be accessed only
    ## here:
    nestedFunction()
    nestedFunction()

## Try calling bigFunction:
bigFunction()
## Try calling nestedFunction (and expect it to fail!)
nestedFunction()
---------------------------------------------------

Try calling bigFunction() from the toplevel.  Then try calling
nestedFunction() directly from the toplevel.  You'll find that you
can't: the definition of nestedFunction is scoped so that its
accessible only after the point commented.


More information about the Tutor mailing list