python是一种的高级的解释性语言 运行的时候 需要解释
编译语言C C++ 是编译语言 一次编译好了之后就可以 直接运行
Python变量名只是一个名字而已,而该变量所绑定的对象在对象创建初期就确定好了类型的,
你永远也不可能再改变其类型,因此Python是动态的、强类型语言
类型检查 发生在运行阶段 类型检查就是查看 “变量” 和它们的 “类型”,然后判断表达式是否合理
而Java是一门静态强类型语言(变量必须声明类型)
类型检查发生在编译阶段
强类型 不管是在编译阶段还是运行阶段,一旦某种类型绑定到变量后,此变量便会持有此类型,并且不能同其他类型在计算表达式时,混合使用
为什么python中不需要声明数据类型?
python的变量存储的是 数值的 一个内存地址的
数值存储在一个内存地址里面 这种变量的关系 称为 引用
python解释器会为每个出现的对象分配内存
C/C++中的变量的概念是面向内存的 变量的内存地址里面直接存储的是值
所以你要声明一个变量:表明空间大小,存储的格式(整数,浮点),以及一个永久不变的名字指向这个变量。 指向内存的 内存存储的值
python它让编程者,更关注与数据对象的操作,而不是数据存储
这对于从C、C++这种以内存为基础的编程模式转换过来的人来说,可能是一个挑战。但你只要用python,name vs object的思维,很多疑惑都会消除。
Python中一切皆是对象
在Python中,不论是数值(整型、浮点型),字符串,字典,元组对象,还是他们所对应的类型,以及函数,模块等你所能看到的都是对象,他们的祖先是PyObject。
hello函数是function类的实例
而Java中至少函数,基本数据类型都不算对象
1、简单易学Python最大的优点之一是具有伪代码的本质,它使我们在开发 Python程序时,更关注与数据对象的操作,而不是数据存储
2、即支持面向对象 也支持面向过程
3、可以移植性 Lnux、Windows 等等
4、解释性 是一种解释性语言 需要解释器来运行不需要编译
5、开源
6、高级语言
7、可扩展
8、丰富的库
9、规范的代码
1、高级语言
我们现在大多数人使用的语言,如C、C++、Python、Java、Matlab、LabVIEW等等,都属于高级语言,相对于低级语言,它更接近于我们平时正常的人思维,其最大的特点是编写容易,代码可读性好。实现同样的功能,使用高级语言耗时更少,程序代码量更短,更容易阅读。其次,高级语言是可移植的,也就是说,仅需稍作修改甚至不用修改,就可将一段代码运行在不同类型的计算机上。
其缺点也很明显,使用高级语言编写的程序运行时,需要先将其翻译成低纸语言计算机才能运行它,在翻译过程中可能程会产生一些多余的部分,运行效率低些。另外,对硬件的可控性相对于低级语言弱些,目标代码量较大。
2、低级语言
泛指机器语言和汇编语言,其中,机器语言是计算机最原始的语言,由0和1的代码构成,计算机在工作的时候只认识机器语言,即0和1的代码;汇编语言,它用人类容易记忆的语言和符号来表示一组0和1的代码,如AND表示加法助记符。
相对于高级语言,其优点是执行速度快,但代码编写难度较大,可读性较差。另外,低级语言编写的程序只能在一种计算机上运行,想要运行在不同的机器上,必须重写。低级语言是早期的一种计算机编程语言,现在只在很少的特殊场景中使用了。
(1)高级语言 包括C ++ C# python java 现在使用的大多是高级语言
(2)低级语言例如 汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言 单片机 等 0 1 表示的语言
高级语言的分类
编译性语言
1、编译型语言
典型的如C、C++、Pascal等语言,都属于编译型语言。它是编译的时候直接编译成机器可以执行或调用的程序,如exe、dll或ocx等类型。如将C语言可直接编译成exe程序,运行时直接运行exe程序就可以了,无需重新编译,所以程序执行效率较高。其执行过程如下所示:
相对于解释型语言,其优点是运行速度快,代码效率高,编译后程序不可以修改,且看不到源码,保密性较好。
缺点是代码需要经过编译方可运行,可移植性差,只能在兼容的操作系统上运行。
由于其执行速度较快,同等条件下对系统的要求较低,因此常用于开发操作系统、大型应用程序、图像处理、数据库开发等场合。
解释性语言
典型的如Java、Python、Matlab等语言,都属于解释型语言。这类程序不需要编译,运行时使用一个专门的解释器去翻译,每一条语句都是执行的时候才翻译,所以这类程序每执行一次就要翻译一次,运行效率较称低。其执行过程如下所示:
相对于编译性语言,其优点是可移植性好,只要有解释器环境,程序就可以在不同的操作系统上运行。
缺点是代码需要有专门的解释器,在程序运行时,除要给用户程序本身分配内存空间外,解释器也占用系统资源,所以其运行速度较慢。另外,也很难达到像C、C++那样操作系统底层操作的目的。
1. 什么是动态语言?
在了解动态语言之前,我们首先了解下 “类型检查”。
类型检查是验证类型约束的过程,编译器或解释器通常在编译阶段或运行阶段做类型检查。
类型检查就是查看 “变量” 和它们的 “类型”,然后判断表达式是否合理。例如,不能拿一个 string 类型变量除以浮点数变量。
类型检查发生在程序运行阶段(run time ),那么它便是“动态类型语言”(dynamically typed languages)。常见的动态语言包括:
Python
JavaScrpit
PHP
类型检查发生在“编译阶段”(compile time)的是“静态类型语言”(statically typed languages)。常见的静态类型语言包括:
C
C++
Java
C#
Scala
2. 什么是强类型语言?
强类型语言是指:不管是在编译阶段还是运行阶段,一旦某种类型绑定到变量后,此变量便会持有此类型,并且不能同其他类型在计算表达式时,混合使用。
例如:
>>> a = 1
>>> a + "a"
Traceback (most recent call last):
File "", line 1, in
TypeError: unsupported operand type(s) for +: 'int' and 'str'
1
2
3
4
5
意思是不支持 int 变量和 str 变量相加。
常见的强类型语言有:
Python
Java
C#
Scala
与之对应的是弱类型语言,弱类型语言容易与其他类型混合计算。弱类型语言代表 Javascript。
支持如下操作:
var a = 10
a = a + "hello, world"
"10hello, world"
1
2
3
常见的弱类型语言有:
C
C++
PHP
Javascript



