Reputation: 539
I've been learning from 'Learn Python the Hard Way' and this particular piece of code gives me a lot of headache:
def break_words(stuff):
"""This function will break up words for us."""
words = stuff.split(' ')
return words
def sort_words(words):
"""Sort the words."""
return sorted(words)
def print_first_word(words):
"""Prints the first word after popping it off."""
word = words.pop(0)
print word
def print_last_word(words):
"""Prints the last word after popping it off."""
word = words.pop(-1)
print word
def sort_sentence(sentence):
"""Takes in a full sentence and returns the sorted words."""
words = brea_words(sentence)
return sort_words(words)
def print_first_and_last(sentence):
"""Prints the first and last words of the sentence."""
words = break_words(sentence)
print_first_word(words)
print_last_word(words)
def print_first_and_last_sorted(sentence):
"""Sorts the words then prints the first and last one."""
words = sort_sentence(sentence)
print_first_word(words)
print_last_word(words)
Once the module is imported I get errors:
>>> import ex25
>>> sentence = "All good things come to those who wait."
>>> words = ex25.break_words(sentence)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "ex25.py", line 4, in break_words
return words
NameError: global name 'words' is not defined
Where did I go wrong? I checked the code millions of times...
Upvotes: 1
Views: 2994
Reputation: 1080
Suppose above answer is enough - you need to reload module. On the NFS filesystem I saw troubles with not recompiled python code after it was changed (and old pyc file was used). If 'reload' does not work you can try remove pyc file and restart python.
ddzialak@pld ~$ python
Python 2.7.2 (default, Aug 16 2011, 10:09:58)
[GCC 4.6.1 20110714 (release)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ex25
>>> sentence = "All good things come to those who wait."
>>> words = ex25.break_words(sentence)
>>> print words
['All', 'good', 'things', 'come', 'to', 'those', 'who', 'wait.']
Upvotes: 0
Reputation: 71
Have you tried running
reload(ex25)
? If you import a file, then change that file, the python process doesn't know that you changed it. You have to either restart, or tell it to look at the module again.
Upvotes: 5
Reputation: 34718
As I say in my comment I think your pyc file is being imported rather than your py code.
Upvotes: 1