前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python和C的主要区别

python和C的主要区别

作者头像
狼啸风云
修改2022-09-04 21:32:22
4.5K0
修改2022-09-04 21:32:22
举报

目录

一、浅层的区别

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年07月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、浅层的区别
    • 1、语言类型
      • 2、内存管理
        • 3、应用
          • 4、速度
          • 二、编译与链接
          • 三、语法的区别
            • 1、C的数据类型
              • 2、python的数据类型
                • 3、运行
                  • 4、运算优先级
                    • 5、作用范围
                      • 6、实现复杂度
                        • 7、函数调用
                          • 8、面向对象与面向过程
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档