【问题标题】:Importing modules that have all its functions inside a main() function导入在 main() 函数中具有所有功能的模块
【发布时间】:2017-04-08 09:54:39
【问题描述】:

我阅读了下面给出的答案:

Why use def main()?

似乎更好的做法(?)在创建模块时将所有代码放在main() 函数中以避免在导入时执行它。

但同时,当我把我所有的函数都放在main() 中,并且我想将它导入到另一个程序中时,我该如何调用所有这些函数呢?

这样做似乎适得其反,但显然我理解错了,所以我很感激我能得到任何帮助。

编辑:如果我理解了,请告诉我,我们没有在 main() 中放置任何实际函数,它们是单独的函数。唯一会进入它的__main__部分?例如:

程序test.py:

def my_function():
    print('Hello')

def my_function2(num):
    return num*num

print('Hi')

修改test.py

def my_function():
    print('Hello')

def my_function2(num):
    return num*num

def main():    #so it doesn't execute when imported
    print('Hi')

这是您如何使用main() 的准确方式吗?

【问题讨论】:

  • 你没有把所有的函数都放在main里面,你main调用它们

标签: python main


【解决方案1】:

main() 通常调用您的其他函数,但不包含它们。您的其他函数将位于main() 上方的脚本主体中,并且可以以标准方式调用。

所以您的 test.py 示例可能如下所示:

def my_function():
    print('Hello')

def my_function2(num):
    return num*num

def main():
    my_function()
    my_function2(5)

if __name__ == "__main__": # if module not imported
    main()

【讨论】:

  • 嗨 @Chris_Rands 我更新了原帖,如果我理解你所说的正确,请告诉我。
  • @tadm123 你还不太对,我已经编辑了我的答案来展示你的例子。 main() 执行其他功能,if __name__ == "__main__": 在模块未导入时执行main()
【解决方案2】:

您在下面的块中调用要执行的函数。假设函数已在模块顶部定义

if __name__=="__main__":
    call your functions you want to execute 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-11
    • 2013-07-31
    • 1970-01-01
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    相关资源
    最近更新 更多