什么是Python的"public static void main(String [] args){...}"?我记得过去曾经使用它然后忘记了.
我基本上想要记住的是一个功能,我认为包括一些下划线(__)...
谢谢
San*_*nta 23
#!/usr/bin/env python
import sys
def main(args):
print args
if __name__ == '__main__':
main(sys.argv)
Run Code Online (Sandbox Code Playgroud)
编辑:模拟void退货.
这是一种常用的习语,但它并不等同于Java public static void main(String args[]). 所有 Python模块都在模块范围内从上到下执行所有语句.对于大多数导入的模块,这些语句通常仅限于类和方法定义,它们在模块的命名空间中设置值,但实际上并不执行函数的代码.但是,如果你把一个声明在模块范围内像SPECIAL_CONSTANT = 42,那么这将立即在模块的进口或独立运行运行-无需main()或__main__什么的.尝试print在简单模块的顶部放置一个语句.无论是导入该模块还是从命令行单独运行该模块,该print语句将始终执行.
这个习惯用法的优点在于它允许您将一些简单的测试或演示代码嵌入到一个库中,该库通常由客户编写的某个模块导入.也许是这样的:
# special_super_duper_module.py
# this next statements will run, even though not in main() or set off
# with "__name__ ==" tests or any such thing
print "You are using special_super_duper_module.py, written by Felix the Cat"
SPECIAL_CONSTANT = 42
def super_duper_function1():
pass
def super_duper_function2():
pass
if __name__ == "__main__":
print "You are running special_super_duper_module.py interactively"
assert super_duper_function1() == None, "expected None, got non-None result"
assert super_duper_function2() == None, "expected None, got non-None result"
# doctests or unittests could also go here, or just a simple demo
Run Code Online (Sandbox Code Playgroud)
当某些代码想要使用你的超级duper函数导入模块时,顶部的小横幅将被打印,但条件化的代码if __name__ etc.... 将无法运行.但是如果您的用户使用python命令直接运行模块,那么嵌入式测试或演示代码将会运行.
相比之下,public static void main(String args[])是一种特殊的方法签名,它告诉Java VM什么类的方法以什么方式开始.Python只是从命名模块的顶部开始,然后从那里开始运行.这就是为什么你只需要写:
print "Hello, World!"
Run Code Online (Sandbox Code Playgroud)
在一个模块中,所有人都可以编写你的第一个Python程序.
| 归档时间: |
|
| 查看次数: |
8878 次 |
| 最近记录: |