gpt4 book ai didi

python - 在python中设计程序入口点

转载 作者:太空狗 更新时间:2023-10-30 01:06:31 24 4
gpt4 key购买 nike

旨在运行所有内容的主文件现在是一打乱七八糟的变量(在顶级控制流中默认为全局变量)、几个结构和一个中等大小的主循环。从其他语言中,我了解到全局变量是邪恶的。我倾向于将它们全部放入同一个文件中的一个类中,并从全局控制流中只调用一个方法,如下所示:

def MyClass:
def __init__(self):
self.value1 = 1
....

if __name__ == "__main__":
#inspect sys.argv here
MyClass().main_proc()

您认为它是设计优势吗?有没有 pythonic 的方法来做到这一点?

最佳答案

Python 不会强制您使用 OOP,例如Java 或 C#,因此如果对您没有真正的好处,则无需将内容放入类中。

特别是创建一个类实例只是为了对事物进行分组并不是进入恕我直言的最佳方式。您可以改为将这些东西提取到模块中。这不需要任何实例,只需要导入即可。这样它也位于单独的文件和命名空间中。

示例:

main.py:

if __name__ == "__main__":
import sys
args = sys.argv[1:]
if len(args) != 2:
print("This script requires exactly two command-line arguments!")
exit(1)

import my_module
exit_code = my_module.run(args) or 0
exit(exit_code)
else:
raise ImportError("Run this file directly, don't import it!")

my_module.py:

# initialization code to be run at import time goes here

def run(args):
# do whatever you need to do
print("Hello world!")
print("You said <", args[0], "> and <", args[1], ">."

# you may return an integer (1-255) as exit code if an error occurred,
# else the default exit code is 0 (successful; no error)

但是,不要将这种方法作为最终真理!这是我个人的(并非如此)拙见,但总有一些情况下一种方法更适合,而另一些则应该成为首选。

此外,这主要是一个设计问题,对程序的稳定性或功能没有实际影响。它可能只会提高可读性,但特别是对于小脚本来说,这不是一个好方法,因为它添加了很多实际上没有做任何事情的代码。它只有在你有一个包含多个模块的大型项目时才有用,我会说。

对于相当小的脚本(单个文件或只有很少的模块),我建议只在顶部定义您需要的所有类和函数,然后使用标准的 if __name__ == "__main__"作为切入点。

关于python - 在python中设计程序入口点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36794098/

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