我目前的编码风格就像
import xxx
def fun1()
def fun2()
...
if __name__ == '__main__':
task = sys.argv[1]
if task =='task1':
do task1
elif task == 'task2':
do task2
...
我的问题是
下的代码部分if __name__ == '__main__':
与上面定义的函数相比,非常庞大,我被告知这不是一个好的编程风格。这是因为我修改了内容并经常在每个任务中进行实验,并且我希望将代码的这些部分与不太可能被修改的函数分开。我想在这里了解更多建议,谢谢!
答案 0 :(得分:4)
就像BusyAnt所说的那样,常见的方法是
import xxx
def fun1()
def fun2()
...
def main():
task = sys.argv[1]
if task =='task1':
do task1
elif task == 'task2':
do task2
...
if __name__ == '__main__':
main()
这样做的好处是它不会在import
上运行,但main()
仍可以从其他模块或文件运行(如果愿意的话)。
答案 1 :(得分:3)
禁止在progressBar.Minimum = 0;
progressBar.Maximum = 100;
if (!(txturl.Text == string.Empty))
{
try
{
IEnumerable<VideoInfo> videos = DownloadUrlResolver.GetDownloadUrls(txturl.Text);
VideoInfo video = videos.First(p => p.VideoType == VideoType.Mp4 && p.Resolution == Convert.ToInt32(cmbResolution.Text));
if (video.RequiresDecryption)
DownloadUrlResolver.DecryptDownloadUrl(video);
VideoDownloader downloader = new VideoDownloader(video, Path.Combine(Application.StartupPath, video.Title + video.VideoExtension));
downloader.DownloadProgressChanged += downloader_DownloadProgressChanged;
Thread thread = new Thread(() => { downloader.Execute(); }) { IsBackground = true };
thread.Start();
}
catch (Exception yt) { MessageBox.Show(yt.Message); }
}
else { MessageBox.Show("Input field cannot be empty."); }
下编写很多内容,尽管将所有内容包装在if __name__ == '__main__'
函数中被认为更好且更具可读性即可。这样,当main()
此模块在另一个模块中时,main()
中的代码不会被执行,但您仍然可以选择运行它,通过调用{{ 1}}。
您的代码将如下所示:
import
我建议您阅读imported_script.main()
声明所做的事情,among the many questions asked about it。