Wiz*_*ard 545 python coding-style
我见过一些使用的代码示例和教程
def main():
# my code here
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
但为什么?是否有任何理由不在文件顶部定义您的函数,然后只在其下编写代码?即
def my_function()
# my code here
def my_function_two()
# my code here
# some code
# call function
# print(something)
Run Code Online (Sandbox Code Playgroud)
我只是想知道主要有没有押韵?
Ign*_*ams 608
如果没有主要的标记,即使脚本作为模块导入,代码也会被执行.
Den*_*aia 237
其他人已经回答了,但我想我还有别的东西需要补充.
让该if
声明调用的理由main()
(无特定顺序):
其他语言(如C和Java)具有在main()
执行程序时调用的函数.使用它if
,我们可以使Python像他们一样,这对许多人来说更为熟悉.
代码将更清晰,更易于阅读和更有条理.(是的,我知道这是主观的)
将import
python代码作为一个没有令人讨厌的副作用的模块是可能的.
这意味着可以针对该代码运行测试.
这意味着我们可以将该代码导入交互式python shell并测试/调试/运行它.
里面def main
的变量是本地的,而外面的变量是全局的.这可能会引入一些错误和意外行为.
但是,您不需要编写main()
函数并在if
语句中调用它.
我自己通常开始编写没有任何功能的小型一次性脚本.如果脚本变得足够大,或者如果我觉得将所有代码放在函数中会使我受益,那么我重构代码并执行它.当我编写bash
脚本时也会发生这种情况.
即使您将代码放在main函数中,也不需要完全按照它编写代码.一个整洁的变化可能是:
import sys
def main(argv):
# My code here
pass
if __name__ == "__main__":
main(sys.argv)
Run Code Online (Sandbox Code Playgroud)
这意味着您可以main()
从其他脚本(或交互式shell)调用传递自定义参数.这可能在单元测试或批处理时很有用.但请记住,上面的代码需要解析argv,因此使用传递已经解析的参数的不同调用可能会更好.
在我编写的面向对象的应用程序中,代码看起来像这样:
class MyApplication(something):
# My code here
if __name__ == "__main__":
app = MyApplication()
app.run()
Run Code Online (Sandbox Code Playgroud)
所以,随意编写更适合您的代码.:)
pyf*_*unc 90
如果foo.py的内容
print __name__
if __name__ == '__main__':
print 'XXXX'
Run Code Online (Sandbox Code Playgroud)
文件foo.py可以以两种方式使用.
- 导入另一个文件:
import foo
在这种情况下__name__
是foo
,该代码段没有得到执行,并且不打印XXXX
.
- 直接执行:
python foo.py
当它直接执行时,__name__
与__main__
该部分中的代码相同并打印XXXX
使用此功能之一在同一模块中编写各种单元测试.
Joh*_*web 20
" 做if __name__==“__main__”:
什么? "已经回答了.
有一个main()
功能,可以让你调用它的功能,如果你import
的模块.这个(恕我直言)的主要(没有双关语)的好处是你可以对它进行单元测试.
归档时间: |
|
查看次数: |
690076 次 |
最近记录: |