Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当uu name uuu不应该';t等于'__主&';_Python_Python 2.7_Python 3.x - Fatal编程技术网

Python 当uu name uuu不应该';t等于'__主&';

Python 当uu name uuu不应该';t等于'__主&';,python,python-2.7,python-3.x,Python,Python 2.7,Python 3.x,我看到很多人在做 if __name__ == '__main__': main() 其中main()可能包含所有有用的代码。如果我不想导入脚本怎么办?它没有可导入的有用函数/类。这样做也一样优雅吗 if __name__ != '__main__': sys.exit() print('this script shouldn\'t be imported') 如果您的代码对外部用户没有任何帮助?除非导入时代码无法正确运行,否则我强烈建议不要添加不必要的保护措施。不要

我看到很多人在做

if __name__ == '__main__':
    main()
其中main()可能包含所有有用的代码。如果我不想导入脚本怎么办?它没有可导入的有用函数/类。这样做也一样优雅吗

if __name__ != '__main__':
    sys.exit()
    print('this script shouldn\'t be imported')

如果您的代码对外部用户没有任何帮助?

除非导入时代码无法正确运行,否则我强烈建议不要添加不必要的保护措施。不要像对待孩子一样对待别人——让他们自己决定。您所需要做的就是提供有关正确用法的文档


如果有人因为某些奇怪的执行顺序问题而导入模块A而不是模块B,您可能会发出一条异常消息,将用户指向A。但这确实不是常见的情况。

导入代码时不要担心,但如果没有人想导入它,请担心!)

事实上,用这种方式保护它有什么用呢? 如果有人让您编写脚本,它可以轻松修复并允许导入。
最好的方法是让人们决定如何导入代码:作为模块或脚本使用。

外部人员不应该是决定您的模块是否对他们有用的人吗?而且,我也这么想,但是
sys.exit()
会引发
SystemExit
异常,因此外部操作是可能的:。斯奈夫特尔,说得好。我在programmers.stackexchange.com上问过,有人建议“Python惯用的正确做法是不在乎。”是的,现在我对为什么会这样有了深刻的直觉。为什么不应该导入它,为什么需要强制执行它?如果那里没有对其他人有用的东西,你为什么认为他们会试图导入它?如果他们试图导入它,这难道不表明你对这些类/函数有用性的直觉是不准确的吗?