在 Python 中从导入的模块导入时输出 [重复]

Posted

技术标签:

【中文标题】在 Python 中从导入的模块导入时输出 [重复]【英文标题】:In Python Outputting on Import From an Imported Module [duplicate] 【发布时间】: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 已经阅读了他认为与我重复的问题,而不是用“重复”的疏忽标记来杀死我的问题,那么最好的情况就是。 【参考方案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."

【讨论】:

以上是关于在 Python 中从导入的模块导入时输出 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

在 os.chdir() 之后无法导入模块 [重复]

在 Python 3 中从同一包内和包外导入模块

在 python 中从我的模块中的另一个文件夹导入模块函数

如何在 Android Studio 中从 SVN 导入模块

Python导模块问题

Python 2.7函数导入[重复]