Python中相当于“public static void main”的是什么

15 投票
6 回答
17192 浏览
提问于 2025-04-15 23:09

Python中类似于“public static void main(String[] args) { ... }”的写法是什么?我记得以前用过,但现在忘了。

我想要记住的基本上是一个函数,我觉得里面有一些下划线(__)...

谢谢!

6 个回答

10

在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后把它放到另一个地方。这个过程就像是搬家,把东西从一个房间搬到另一个房间。

在这个过程中,我们可能会遇到一些问题,比如数据格式不对,或者数据不完整。这就像是搬家时发现有些箱子没打包好,或者有些东西丢了。

为了避免这些问题,我们可以提前检查一下数据,确保它们都是完整的、格式正确的。这样在搬家的时候,就能顺利很多,不会出现意外情况。

总之,处理数据就像搬家,提前做好准备可以让整个过程变得更加顺利。

if __name__ == "__main__":
    ....do your thing
11

这是一个常用的说法,但它和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程序。

24
#!/usr/bin/env python

import sys

def main(args):
    print args

if __name__ == '__main__':
    main(sys.argv)

编辑: 模拟一个 void 返回。

撰写回答