gpt4 book ai didi

python - 导入函数时它运行整个脚本?

转载 作者:可可西里 更新时间:2023-11-01 09:40:46 25 4
gpt4 key购买 nike

我是 python 的新手,正在做作业。它本来是用 linux 来完成的,但由于我是在自己的计算机上自己做的,所以我在 windows 上做。

我一直在尝试做这个我们使用的测试系统,看起来像这样:

>>> import file
>>> file.function(x)
"Answer that we want"

然后我们通过 linux 终端运行它。我一直在尝试通过制作一个导入文件并运行函数的测试文件来创建自己的方法。但另一方面,只要运行函数,它就会运行整个脚本。尽管它从未被要求这样做。

Import file
file.function(x)

这几乎就是我一直在做的,但它运行整个"file"。我也试过 from file import function;它的作用相同。

我可以使用什么样的脚本来为测试文件编写“我想要的答案”的脚本?当我们通过 linux 终端运行时,它会说它是否失败或得分。

最佳答案

导入一个文件等同于运行它。

当您导入一个文件(模块)时,会创建一个新的模块对象,并且在执行该模块时,每个新标识符都会作为一个属性放入该对象中。

因此,如果您不希望模块在导入时执行任何操作,请重写它,使其仅包含赋值和函数定义。

如果你想让它只在直接调用时运行,你可以这样做

A = whatever

def b():
...

if __name__ == '__main__'
# write code to be executed only on direct execution, but not on import
# This is because direct execution assigns `'__main__'` to `__name__` while import of any way assigns the name under which it is imported.

无论您是执行 import module 还是 from module import function,这都适用,因为它们的作用相同。只有最终分配不同:

import module 做:

  • 检查 sys.modules,如果模块名称不在其中,则导入它。
  • 将标识符 module 分配给模块对象。

from module import function

  • 检查 sys.modules,如果模块名称不在其中,则导入它。 (与上述步骤相同)。
  • 将标识符function分配给模块对象的属性function

关于python - 导入函数时它运行整个脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25788190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com