写过java的都知道,程序是有一个入口的,当然其他语言像C语言也是有的。这个入口程序也叫做main函数。
java的main函数是这么写的:
public static void main(String[] args) {}
当然类似的函数在python中也是有的,
if __name__ == "__main__":
但是他们有很大的不同,我们看一下维基百科是怎么解释的:
解释型语言(英语:Interpreted language),是一种编程语言。这种类型的编程语言,会将代码一句一句直接运行,不需要像编译语言(Compiled language)一样,经过编译器先行编译为机器代码,之后再运行。这种编程语言需要利用解释器,在运行期,动态将代码逐句解释(interpret)为机器代码,或是已经预先编译为机器代码的的子程序,之后再运行。
理论上,任何编程语言都可以是编译式,或解释型的。它们之间的区别,仅与程序的应用有关。许多编程语言同时采用编译器与解释器来实现,其中包括Lisp,Pascal,C,BASIC 与 Python。JAVA及C#采用混合方式,先将代码编译为字节码,在运行时再进行解释。
类似的还有
php,JavaScript、VBScript、Perl、Ruby、MATLAB,Shell都叫解释性语言,其实我们更喜欢叫他们为脚本。而java和C#就需要先编译成字节码,才能运行。
下面说一下优缺点:
解释型语言:程序不需要编译,程序在运行时才翻译机器语言,每执 行一次都要翻译一次。因此效率比较低。而编译型语言由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用编译型语言。但是对执行时间不是很关心的比如数据挖掘,数据分析之类的我们就可以使用解释型语言了。
由于是逐行执行,所以我们在编写python代码的时候一般会把main函数放到最后一行。
如果放到前面,则会报错,因为调用main函数的时候此时sayHello()方法在下面还没有完成初始化,main函数当然会报错。
而java就无所谓,你放到哪里都可以正确执行。
还有一个细节就是,在python中
它不仅仅只执行main函数里面的内容的,因为它是逐行执行。所以最上面的
print("first")
也会先打印出来,而java则只会执行main函数里面的内容。
A.py
print("first")def sayHello(): str = "hello" print(str); print(__name__ + 'from A.sayhello()')if __name__ == "__main__": print('This is main of module "A.py"') sayHello() print(__name__ + 'from A.main')
B.py
import Aif __name__ == "__main__": print ('This is main of module "B.py"') A.sayHello() print(__name__)
当A作为一个模块被另一个文件调用的时候,我们可以看到
first这一行是因为impor A打印出来的,而A的main函数并没有执行,足见python的设计也是很巧妙的。
所以我们应该把要执行的东西放到main函数中,无关代码不要随意的写到其他位置,否则会给调用带来麻烦。