python - 如何从另一个python文件执行 `if __name__ == "__main_ _"`中的代码

标签 python namespaces pytest program-entry-point

在我的 python 文件中,我有一个带有一些参数的函数,在同一个文件中,我有一个 if __name__ == "__main__" 子句,它使用一组特定的参数运行此函数(例如用户展示其功能)。就像这样,

def foo(arg1, arg2):
    pass

if __name__ == "__main__":
    arg1 = 1
    arg2 = 2
    foo(arg1, arg2)

此外,我还有另一个包含 pytest 使用的测试的文件。我想让其中一个测试运行与上面提到的 if 子句中写入的内容完全相同的内容,即执行

arg1 = 1
arg2 = 2
foo(arg1, arg2)

无需将代码复制到包含测试的文件中是否可以实现?

最佳答案

好吧,我不是这方面的专家,但是如何重定向你的 if __name__ == "__main__": 到另一个函数并从其他文件调用该函数?

文件1:

def main_file1:
  arg1 = 1
  arg2 = 2
  foo(arg1, arg2)

if __name__ == "__main__":
  main_file1()
<小时/>

文件2:

from file1 import *

def somefunc():
  main_file1()

但是,我不确定您为什么要这样做。通常,您的整个项目中只有 1 个主要函数来让事情顺利进行并从那里调用其他函数。

最终这种方式无法达到文件主要功能的目的

关于python - 如何从另一个python文件执行 `if __name__ == "__main_ _"`中的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55367538/

相关文章:

python - Django 中的日期验证错误

namespaces - 为什么在查询本体时我们必须加载本体,还要提供它的命名空间?

python - 使用返回列表的 fixture 参数化 pytest 函数的最佳方法是什么?

python - 当 Pyunit 和 Nose 测试失败时,为什么 py.test 通过单元测试(如预期的那样)?

python - 用于与多个 boolean 列/系列进行类似集合比较的矢量化 Pandas 方法

python - 如何让 max() 返回变量名而不是 Python 中的值?

任务的 Python 并行化(事件循环?)

c++ - C++中的命名空间

c++ - 在某个命名空间中定义方法时在全局命名空间中声明?

python - pytest 是否限制自定义命令行参数中的所有小写选项?