Python 是 解释型语言,强类型定义语言,动态类型定义语言
编译型语言 & 解释型语言
编译型语言:代码在执行前,需要编译(成机器语言文件,如 .exe 文件);以后再运行时,直接使用编译后的文件(如 .exe 文件)
# 1. Java、C++ 等属于编译型语言
# 2. 一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高
# 3. 与特定平台相关,一般无法移植到其他平台
# 4. 与其他编译型语言相比,Java 程序能够做到一次编译,处处运行,跨平台性非常强
# 是因为对 Java 程序而言,只认识一种操作系统,这个系统就是 JVM,字节码文件(扩展名为 .class 的文件) 就是 JVM 的可执行文件
# 所以 Java 程序并不理会真正执行哪个平台,只要知道如何执行于 JVM 就可以了,至于 JVM 实际上如何与底层平台沟通,那是 JVM 自己的事,
# JVM 实际上相当于 Java 程序的操作系统,JVM 就负责了 Java 程序的各种资源管理
# ========== 关于 Java 总结 ======== #
## 一. JVM 就是 Java 程序的操作系统,JVM 的可执行文件就是 .class 文件
## 二. Java 虚拟机屏蔽了操作系统之间的差异,但是不同的系统使用的虚拟机不同。
解释型语言:代码在执行时,才被解释器一行行动态翻译(成机器语言)和执行;以后再运行时,还需逐行动态翻译和执行
# 1.Python 属于解释型语言
# 2.解释型语言每次运行都需要将源代码解释称机器码并执行,效率较低
# 3.只要平台提供相应的解释器,就可以运行源代码,所以可以方便源程序移植
# 4.所以 Python 会有胶水语言之称
动态类型语言 & 静态类型语言
动态类型语言:在运行时检查类型的语言,即动态类型语言
# Python、PHP 是动态类型语言
# EXAMPLE:
>>> a = 1
>>> type(a)
<type 'int'>
>>> a = "s"
>>> type(a)
<type 'str'>
静态类型语言:在编译时检查类型的语言,即静态类型语言
# Java、C、C++ 是动态类型语言
# EXAMPLE:
Prelude> let a = "123" :: Int
<interactive>:2:9:
Couldn't match expected type `Int' with actual type `[Char]'
In the expression: "123" :: Int
In an equation for `a': a = "123" :: Int
强类型语言 & 弱类型语言
强类型语言:如果一门语言很少隐式转换类型,即强类型语言
# Python、Java 是强类型语言
# EXAMPLE:
>>> 1+"2" # 会报 TypeError 错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
弱类型语言:如果一门语言经常隐式转换类型,即弱类型语言
# PHP、JavaScript、Perl 是弱类型语言
# EXAMPLE:
> "1"+2
'12'