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. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor