Java与Python语法对比总结

Java与Python语法对比总结

持续更新,边学边总结

1. 执行顺序

与Java、C、C++等几种语言不同的是,Python是一种解释型脚本语言,在执行之前不同要将所有代码先编译成中间代码,Python程序运行时是从模块顶行开始,逐行进行翻译执行,所以,最顶层(没有被缩进)的代码都会被执行,所以Python中并不需要一个统一的main()作为程序的入口。在某种意义上讲,"if __ name __ == ‘__ main __’:"也像是一个标志,象征着Java等语言中的程序主入口,告诉其他程序员,代码入口在此——这是“if name==’main:”这条代码的意义之一。(注意代码仍是从模块的顶部才是执行,如果希望从main开始要么顶格写入main,要么main前面只包含被main后面调用的方法体)。Python main只起到一个标识的作用,常用于函数调试,只有被执行的模块name才会被赋值为main,此时才会执行main后面的程序,而被import的模块,name被赋值为当前模块名,所以其后代码不会被执行
(模块就是一个.py文件)

下面以一个简单的小例程解释
模块A:

# 模块A
a = 100
print('你好,我是模块A')
print(a)

单独执行模块A,程序自上而下执行(不需要main)
输出:

你好, 我是模块A
100

模块B:(import A)

# 模块B
import A
b = 200
print('你好,我是模块B')
print(b)

运行模块B时同样会从模块顶部(包括import)开始执行
输出结果:

你好,我是模块A
100
你好,我是模块B
200

接下来,引入 if __ name __ == ‘__ main __’ 条件语句(“ __ ”符号是python对内置变量的一种标识)来解释它的作用
模块A修改为:

# 模块A
a = 100
print('a')
if __name__ == '__main__':
	print('你好,我是模块A')

单独运行模块A
输出结果:

100
你好,我是模块A

发现此时程序仍是自上而下执行,先执行main条件语句上面的语句输出100,再执行main条件语句。不会像Java一样从main进入先执行你好,我是模块A语句。本质上这个main就是一个普通的if判断语句,如果此时打印"__ name ",会发现“ name __”就是== __ main __,条件语句通过

print(__name__)

#输出结果
__main__

模块B不做修改,直接执行
输出结果:

100
你好,我是模块B
200

模块B和模块A中都有if-main语句,执行顺序仍然是自顶而下(顶包括import),所以结果先执行了模块A的上面语句输出100,然后执行模块B的语句顺序输出,但是为什么没有输出“你好,我是模块A”呢,正如上文所说,只有当前被执行的模块__ name __ 才会被赋值为 __ main 使得if条件通过,而被import的模块, name __被赋值为模块名,if条件不通过

java则一定是从main()开始执行,main()方法外不能调用方法,不能执行输出语句,只能定义一些待带调用的方法体或者变量(运行时先加载到内存中)。
我们都知道Java作为一个典型的面对对象的语言,并且有着“万事万物皆可为对象”的说法。Java的main函数pubic static void main(){}本质上就是一个静态方法(方法一定得被对象实例调用,只有静态方法才可以直接调用),Java虚拟机在将所有代码加载到内存后,会自动搜寻main方法并由此开始执行。从这个角度去理解,main方法就像入口的标识。

更多对比请点击下面链接

  1. 继承
  2. 对象实例方法__call__函数(python特有的一种回调方式)
  3. 封装性(主要体现在_和private等关键字的标示方式上)
  4. 变量作用域(主要区别体现在方法体和for,if,while等代码块中一个参考
  5. 构造器
    等待更新…

参考知乎:if __name __ == ’ __ main __'如何正确理解

你可能感兴趣的:(java,python,python,java)