Python中相当于“public static void main”的是什么
Python中类似于“public static void main(String[] args) { ... }”的写法是什么?我记得以前用过,但现在忘了。
我想要记住的基本上是一个函数,我觉得里面有一些下划线(__)...
谢谢!
6 个回答
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后把它放到另一个地方。这个过程就像是搬家,把东西从一个房间搬到另一个房间。
在这个过程中,我们可能会遇到一些问题,比如数据格式不对,或者数据不完整。这就像是搬家时发现有些箱子没打包好,或者有些东西丢了。
为了避免这些问题,我们可以提前检查一下数据,确保它们都是完整的、格式正确的。这样在搬家的时候,就能顺利很多,不会出现意外情况。
总之,处理数据就像搬家,提前做好准备可以让整个过程变得更加顺利。
if __name__ == "__main__":
....do your thing
这是一个常用的说法,但它和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
当这个模块被某段代码导入时,想要使用你那些超级厉害的函数,顶部的小横幅会打印出来,但由if __name__ == "__main__"
条件控制的代码不会被执行。但是如果用户直接使用python命令运行这个模块,那么嵌入的测试或演示代码会被执行。
相比之下,public static void main(String args[])
是一个特殊的方法签名,它告诉Java虚拟机从哪个类的哪个方法开始。而Python则是从命名模块的顶部开始执行。因此,你只需要在一个独立的模块中写:
print("Hello, World!")
就可以写出你的第一个Python程序。
#!/usr/bin/env python
import sys
def main(args):
print args
if __name__ == '__main__':
main(sys.argv)
编辑: 模拟一个 void
返回。