【问题标题】:Accessing a function from a module从模块访问函数
【发布时间】:2012-01-18 10:56:04
【问题描述】:

我不知道如何将我的简单函数添加到我的主程序文件中。为什么不呢?

当我这样做时:

import print_text 

echothis("this is text")
exit()

无法理解为什么人们认为这是一个糟糕的问题。

这也不起作用:

print_text.echothis("this is text")

如果我输入以下任何答案,也会发生同样的事情。 包括:

from print_text import echothis

我只是得到这个错误:

from: can't read /var/mail/print_text
./blah3.py: line 3: syntax error near unexpected token `"this is text"'
./blah3.py: line 3: `print_text.echothis("this is text")'

或没有 /var/mail 行的变体...

*此文件名为 print_text.py*

#!/usr/bin/env python

import time
import random
import string
import threading
import sys

def echothis(txt):
    woo=txt
    stdout.write(woo)

【问题讨论】:

  • 实际上你应该得到一个错误说echothis是未定义的。你的导入应该是from print_text import echothis
  • 你用什么材料学习python?听起来你应该得到更好的学习材料。
  • 我看不到线程对象的创建位置。也许您缺少的是实例化 print_text 类并为该对象调用 start 方法。
  • 导入不是包含
  • 我猜你使用的是 bash 而不是 python,这不是 python 回溯,而是 bash。请参阅下面我编辑的答案。

标签: python class definition


【解决方案1】:

编辑:您实际上没有遇到 python 问题,而是遇到了 bash 问题。您正在运行您的 python 脚本,就好像它是 bash(因此“来自:无法读取”),您是否将 #!/usr/bin/env python 放在您正在运行的文件的开头(不是 print_text.py,另一个)?您也可以这样称呼它:python myfile.py,它应该可以工作。



当你导入一个模块时,它是命名空间的,所以如果你想使用来自那个模块的任何东西,你需要使用正确的命名空间来调用它。在这里,您可以使用print_text.echothis 调用echothis 函数。

或者,如果您想在主命名空间中包含echothis,您可以使用from print_text import echothis 语法。

【讨论】:

    【解决方案2】:

    试试这个:

    import print_text
    
    print_text.echothis("this is a text")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 2013-04-02
      • 2018-06-14
      • 2021-02-12
      • 2015-03-29
      相关资源
      最近更新 更多