1

私は「Pythonをハードウェイで学ぶ」から学んでいますが、この特定のコードは私に多くの頭痛の種を与えます。

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) 

モジュールがインポートされると、エラーが発生します。

>>> 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

どこで私は間違えましたか?私は何百万回もコードをチェックしました...

4

3 に答える 3

5

走ってみましたか

reload(ex25)

? ファイルをインポートしてからそのファイルを変更すると、python プロセスは変更されたことを認識しません。再起動するか、モジュールをもう一度見るように指示する必要があります。

于 2012-05-09T20:51:24.033 に答える
1

私のコメントで言っているように、py コードではなく pyc ファイルがインポートされていると思います。

于 2012-05-09T20:45:36.310 に答える
0

上記の答えで十分だとしましょう-モジュールをリロードする必要があります。NFSファイルシステムで、変更後にPythonコードを再コンパイルしない(古いpycファイルを使用した)という問題が発生しました。'reload'が機能しない場合は、pycファイルを削除して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.']
于 2012-05-09T20:59:45.633 に答える