【问题标题】:Learn python the hard way, exercise 25艰难地学习python,练习25
【发布时间】:2013-04-06 00:16:15
【问题描述】:

大家好,我是 python 语言的新手,我选择了学习 python 的艰难方式来学习它并加深我的理解......我被练习 25 难住了,当我们将代码直接导入终端时

>>> 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>
AttributeError: 'module' object has no attribute 'break_words'

我正在使用 python 2.7 windows 7请帮忙.....http://learnpythonthehardway.org/book/ex25.html

【问题讨论】:

  • 那么你在ex25.py 中定义了什么?
  • import ex25; dir(ex25) 会告诉你模块提供了哪些功能。
  • 可能是 ex25 中的拼写错误,或者您没有从网页中复制/粘贴所有源代码。
  • 练习链接提供了关于我输入和定义的代码的所有信息。我按照 Zeds 的指示,他跑得很好?我将再次检查代码以检查拼写错误。

标签: python import


【解决方案1】:

ex25.py 链接中的代码确实包含该功能 - 您的代码并不表示您在将代码转录到文件时以某种方式错过了它。检查您的ex25.py 是否包含页面中的所有代码,特别是包含此函数(它是最顶部的):

def break_words(stuff):
    """This function will break up words for us."""
    words = stuff.split(' ')
    return words

考虑将代码粘贴到您的编辑器中,而不是转录它,以避免出现此类错误。

【讨论】:

    【解决方案2】:

    在我看来,该练习并未指示学习者在导入之前保存文件。为了使其工作,您必须使用文本编辑器将定义 break_words 函数的代码保存在名为 ex25.py 的文件中。然后,从同一目录中输入以下命令打开 python 解释器:

    python
    

    你应该能够导入 ex25 并运行 ex25.py 模块定义的 break_words 函数。

    【讨论】:

    • 整本书似乎都有一条常设指令,即每个练习中的第一个代码块将保存到ex??.py。似乎 OP 已经这样做了,否则他们会得到 ImportError 而不是 AttributeError
    • 我必须保存它,非常感谢大卫,我从来没有保存它-_- Facepalm ...不过非常感谢大家的帮助..
    • @lvc 我是 Shaw 作品的粉丝,但是对于超链接书籍的元指令的概念似乎很麻烦,因为每次隐含时都会实际引用元指令,否则不经意的读者会在缺席之前的课程的情况下冲浪在该课程中丢失了。我建议将额外的堆栈空间要求强加给已经负担过重的学习者并不是好的教学法。
    • @user2276539 没问题。很高兴我能帮上忙。
    猜你喜欢
    • 2015-05-01
    • 1970-01-01
    • 2011-12-04
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    相关资源
    最近更新 更多