【问题标题】:In Python Outputting on Import From an Imported Module [duplicate]在 Python 中从导入的模块导入时输出 [重复]
【发布时间】:2015-01-28 00:16:08
【问题描述】:

使用 Python 2.7。

看到导入模块“this”时,会自动生成屏幕输出(解释器)。

import this

它输出某种标记为“The Zen of Python, by Tim Peters”的文本。

我很好奇这是怎么做到的。 一个模块如何在导入时立即输出或执行任何操作?

[编辑] 这不是重复的,因为引用的问题是关于模块“this”中使用的“ROT13”编码,而不是关于如何从导入的模块调用操作。

【问题讨论】:

  • 只需添加一些打印语句。 hg.python.org/cpython/file/94d8524086bd/Lib/this.py
  • 感谢您的有用评论。
  • 接受的答案具有误导性,Python 中的导入不是 C:docs.python.org/3/reference/import.html#the-import-system 中的 #include 那样的复制粘贴
  • 如果您在结束问题时遇到问题,请使用 cmets,不要将这些内容添加到问题正文中。
  • @ Ashwini Chaudhary 重复的注释说“编辑此问题以解释它有何不同”。如果@mhawke 已经阅读了他认为与我重复的问题,而不是用“重复”的疏忽标记来杀死我的问题,那么最好的情况就是。

标签: python import


【解决方案1】:

当您导入某些内容时,您相当于将一个类复制并粘贴到文件顶部。在那个包中,任何可以在你的普通 python 文件中完成的事情都可以完成,因此是一个 print 语句。

【讨论】:

  • 而且您通常更担心在导入模块时做某事,因此有条件的if __name__ == '__main__':
  • 好消息。我很高兴@Roberto 添加了关于 main 的内容。我会疯狂地试图让它工作,因为我所有的模块都有 main
  • Import 不像 Python 那样工作,它不等同于复制粘贴源代码。 When we import something 创建了一个模块对象,需要从上到下处理整个模块,因此如果全局级别存在任何打印,那么它们也会被执行。如果它等同于复制粘贴,那么我们将始终在当前模块中使用来自导入模块的所有变量。
  • 如果我错了请纠正我,但我相信它是我指定的,在文件顶部粘贴一个自包含类(当然它比这复杂一点)
  • 不,它不等同于,例如,如果是这种情况,那么导入模块中的global 语句也会从当前模块中选择项目。
【解决方案2】:

试试这个你会明白的:

main.py

from help import *

help.py

print "I'm a helper script."

【讨论】:

    猜你喜欢
    • 2015-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-16
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多