Python的等价物“公共静态虚空主”
Python相当于“public static void main(String[] args) { ... }”?我记得过去曾使用过它,然后忘记了。
我基本上试图记住的是一个功能,我认为它包括一些下划线(__)...
感谢
Python相当于“public static void main(String[] args) { ... }”?我记得过去曾使用过它,然后忘记了。
我基本上试图记住的是一个功能,我认为它包括一些下划线(__)...
感谢
#!/usr/bin/env python
import sys
def main(args):
print args
if __name__ == '__main__':
main(sys.argv)
编辑:模拟返回。void
这是一个常用的成语,但它并不等同于Java的。都Python 模块从上到下执行模块范围内的所有语句。对于大多数导入的模块,这些语句通常仅限于类和方法定义,这些定义在模块的命名空间中设置值,但实际上并不执行函数的代码。但是,如果您在模块范围(如 )放置一个语句,那么当模块导入或独立运行时,它将立即运行 - 不需要或任何东西。尝试将语句放在简单模块的顶部。无论是导入该模块还是从命令行自行运行该模块,该语句都将始终执行。public static void main(String args[])
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
当模块被一些想要使用你的超级 duper 函数的代码导入时,顶部的小横幅将打印出来,但条件化的代码将不会运行。但是,如果您的用户直接使用python命令运行模块,则嵌入式测试或演示代码将运行。if __name__ == "__main__"
相反,是一种特殊的方法签名,它告诉Java VM从什么类的什么方法开始。Python只是从命名模块的顶部开始,然后从那里开始运行。这就是为什么你只需要写:public static void main(String args[])
print("Hello, World!")
在一个模块中,完全可以编写您的第一个Python程序。