python和C的主要区别

目录

一、浅层的区别

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中引入了类和对象,是面向对象编程的语言,面向对象使得代码的可重用性大大提高,数据的封装性也更好。面向对象与面向过程的具体比较就不多说了,但有两句非常重要的话:类是抽象的,而对象是具体的。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券