目录
一、浅层的区别
1、语言类型
2、内存管理
3、应用
4、速度
二、编译与链接
三、语法的区别
1、C/C 的数据类型
2、python的数据类型
3、运行
4、运算优先级
5、作用范围
6、实现复杂度
7、函数调用
8、面向对象与面向过程
一、浅层的区别
1、语言类型
- python是一种基于解释器的语言,解释器会逐行读取代码;首先将python编译为字节码,然后由大型C程序解释。
- C是一种编译语言,完整的源代码将直接编译为机器代码,由CPU直接执行。
2、内存管理
- python使用自动垃圾收集器进行内存管理。
- 在C语言中,程序员必须自己进行内存管理。
3、应用
- python是一种通用编程语言,一个多范式。它主要支持面向对象编程,程序编程,函数编程。
- C是结构化编程语言。允许使用函数,选择(if / else等),迭代(循环)。它主要用于硬件相关的应用程序。
4、速度
- python编程语言因为历史原因,有一个GIL锁,导致其对多线程支持不够好,运行速度较慢;而C语言很快,C语言是比较底层的语言,运行效率上要优于python。
二、编译与链接
C语言是编译型语言,经过编译后,生成机器码,然后再运行,执行速度快,不能跨平台,一般用于操作系统,驱动等底层开发。python是编译型还是解释型这个界限并不明显,但大致上可以理解为解释型语言,执行速度慢,由于python虚拟机,python是可以跨平台的,python高度集成适合于软件的快速开发。
三、语法的区别
1、C的数据类型
C语言中需要事先定义变量类型,以int类型为例,当定义一个int型变量后,就会在内存中开辟4个字节,再来进行初始化,由于长度是指定的,在运算过程中需要考虑,溢出,精度等问题。
2、python的数据类型
python中的数据类型:
1.Number:数字
- Int
- Float
- Bool
- Complex
2.String:字符串
3.List:列表
4.Tupel:元组
5.Sets:集合
6.Dictionary:字典
python不需要事先定义变量类型,以a=3为例,在内存中存放一个整数3,然后再用变量a指向3,变量a是没有类型的,我们所说的类型是指变量所指的内存中对象的类型。从数据类型上就可以看出python的友好性,基本数据类型变少了,没有烦人的指针,不需要考虑数据溢出和精度的问题,当在程序中需要使用某个变量时,就能够直接使用,而不需要在程序开头定义变量。除此之外,python还提供了str,list,dict这些强大的数据类型,让程序开发变的更为简单。
3、运行
python还提供了一个交互界面,输入python进入交互界面,输入exit()退出交互界面,类似于Linux终端,输入一行命令,执行一行,为学习Python提供了很大的便利。
4、运算优先级
在运算符和优先级上面,两者并没有大的区别,但在python中没有自加和自减运算符,在逻辑运算符上python也区别于C语言,Python中是and,or,not ,而C语言中则是&&,||,!
5、作用范围
python中通过缩进来表示语句体,C语言通过{}来表示语句体,并且在python中每一条语句结尾后没有分号,判断语句if else,这两者没有区别,循环语句while也没有,只是for循环,Python通过for in来表示。
6、实现复杂度
python有很多内置函数(build in function),不需要写头文件,Python还有很多强大的模块,需要时导入便可。C语言在这一点上远不及python,大多时候都需要自己手动实现。
7、函数调用
C语言中的函数,有着严格的顺序限制,如果要调用函数,该函数需要在本次调用之前就需要被实现,或者在程序开头事先声明,而python中则没有这个限制,python中还有高阶函数这一概念,即函数名也可当作函数参数,函数名也是一种变量,指向内存中的某个函数,这种写法可以大大减少代码长度。python中还提供了可变参数和关键字参数,这样使得函数的功能大大提高,原来需要写多个函数,现在只需要一个函数就可以实现这些功能。
8、面向对象与面向过程
C语言是面向过程的语言,很多时候都需要自己手动实现函数来完成某一功能。python中引入了类和对象,是面向对象编程的语言,面向对象使得代码的可重用性大大提高,数据的封装性也更好。面向对象与面向过程的具体比较就不多说了,但有两句非常重要的话:类是抽象的,而对象是具体的。