旨在运行所有内容的主文件现在是十几个变量(默认情况下在顶层控制流中是全局变量),几个结构和一个中型主循环.从其他语言我了解到全局变量是邪恶的.我倾向于将它全部放入同一个文件中的一个类中,并从全局控制流中调用一个方法,如下所示:
def MyClass:
def __init__(self):
self.value1 = 1
....
if __name__ == "__main__":
#inspect sys.argv here
MyClass().main_proc()
Run Code Online (Sandbox Code Playgroud)
你认为这是一个设计加吗?有没有pythonic方式来做到这一点?
Python不会强迫您像Java或C#这样使用OOP,因此,如果没有真正的好处,则无需将其放入类中。
特别是创建仅用于对材料进行分组的类实例并不是进行IMHO的最佳方法。您可以将这些内容提取到模块中。这不需要任何实例,只需要导入即可。这样,它也位于单独的文件和名称空间中。
例:
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!")
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
但是,请勿将这种方法视为最终真理!这是我个人的(不是这样)拙劣的见解,但是在某些情况下,总是有一种方法更合适,而在另一些情况下,应该首选其他方法。
同样,这主要是一个设计问题,对程序的稳定性或功能没有真正的影响。它可能只会提高可读性,但是特别是对于小型脚本而言,这不是一个好方法,因为它添加了很多代码,它们实际上并没有执行任何操作。我会说,只有在您的大型项目带有多个模块时,它才有用。
对于较小的脚本(单个文件或只有很少的模块),我建议只在顶部定义所需的所有类和函数,然后将标准if __name__ == "__main__"用作入口点。
| 归档时间: |
|
| 查看次数: |
2610 次 |
| 最近记录: |