直接干货:先稍微了解两种语言的基本不同
| python | c |
执行方式 | 无需手动编译,执行时按行读取,自动编译成字节码,所以python可轻易被获取源码 | 需要手动进行编译生成机器可直接执行的机器码 |
内存管理 | 有自己的垃圾回收机制(GC),开发者无需关心 | 需要自己进行内存管理(如:free操作) |
速度 | 为了避免线程间出现竞争,需要设置GIL锁,导致多线程执行时效率下降 | 由于更加底层,可以通过特殊逻辑设计避免资源竞争 |
应用 | 多用于人工智能,数学计算,自动化办公(测试,运维,爬虫、数据分析等)等快速开发场景 | 常用于嵌入式开发,或银行系统开发,等操控硬件或者有更多性能要求的特殊场景。 |
复杂度 | 编写简单,易上手,在了解基本语法后,搭配常用库,即可完成日常功能开发 | 需要声明变量,了解指针,语法规则繁琐 |
语法的对比:
1、注释的区别
python使用 # 号进行单行注释 或者 ‘’‘ ~’‘’ 进行多行注释(三个单引号),~为注释内容。当然也可以使用 “”“ ~”“”(三个双引号)
c语言注释采用 // 进行单行注释,/* ~ */进行多行注释,~为注释内容
2、引号
python中单引号和双引号区别不大,在定义字符串时可以使用 name = “干饭小子”,也可以使用name = '干饭小子',但是注意同一类型的引号不要连续使用,容易引起匹配错误,最好交叉使用。
c中单引号和双引号的区别字符和字符串中体现明显。定义字符必须使用单引号 如 定义字符 char ch='n'; 定义字符串常量 char word[81] = "I am hero"
3、变量声明方式
#python的无效进行特殊声明 直接 变量名 = 值即可。 如:name='干饭小子'
//c语言需要对变量进行声明 使用 数据类型 变量名 = 值:如 : int age = 25;
4、语句体描述(以三大控制语句为例)
python中语句体使用缩进表示优先级以及代码结构
c语言中使用 ;和 { }显示代码结构。具体使用间如下代码
| python | c |
if else | if name == '铁柱': print("情敌1") elif name == '王琦': print("情敌2”) else: print("情敌3") | if (name == '铁柱'){ printf("情敌1"); } else if(name == '王琦'){ print("情敌2”); } else{ print("情敌3"); } |
for | for num in range(5): print ('当前数字: %d'% num) #目前更流行的做法是 print ('当前数字: {}'.format(num)) | for(int num=0;num<5;num++){ printf("当前数字: %d",num); } |
while | count = 0 while count < 5: print(count, " is less than 5") count = count + 1 else:#可选 print(count, " is not less than 5") | int count = 0; while(count < 5){ printf("%d ,is less than 5",count); count++; } |
print(f) | print("字符串1","字符串2","字符串3") python3和python2的print方式不同且不互相兼容 | printf("字符串1字符串2字符串3"); |
可见python在语法上更加简便,但是对缩进要求极为严格,有时候空格和Tab混用甚至会发生错误且极难被排查出来,小编深受其害。c有明确的花括号限定语句块,但是编写时极容易出现结束花括号少了或者位置错了的情况,且排查很容易看着看着就懵逼了。C语言的规则比python多很多。
5、main函数对比
python可以没有main方法,但是c必须要有main方法。
| python | c |
main |
def main():
……………………
if __name__ == '__main__':
main() | void main(void){ …………………… } |
6、获取用户输入函数对比
| python | c |
输入 | age= input("请输入你喜欢的人的年龄") | printf("请输入你喜欢的人的年龄:"); scanf("%d",&age); |
7、return对比
python 在函数中可以return 多个值且任意类型 可自由组合 如:return num1,str2,num3
c中函数只能return一个值,如 :return num1; 如果确实需要实现类似返回多个值的场景需要使用指针(更头大),且返回的值必须和函数头定义的一致。如下必须返回一个int类型的值。
int sum(void){
……………………
return 1;
}
8、函数定义对比
| python | c |
函数 | def getFileList(path): …… return list | int sum(int a,int b){ …… return 1; } |
9、函数调用对比
python在当前文件任意位置定义函数都可直接调用,以上面函数为例 file_list=getFileList(path) 即可,当然它也不一定必须赋给一个变量。如果使用的函数不在当前文件可以通过import导入。(这里不考虑类方法)
c在当前文件任意位置定义函数都不可直接调用,当然,除非定义的函数在main方法之前,但一般不建议这么整,太low了不符合程序员的自我修养。一般函数定义在main方法之后,所以需要声明函数原型。以上面函数为例 在main方法之前写上 int sum(int a,int b); (要分号结尾哦)。如果使用到的函数不在该文件中,需要使用#include引入头文件
10、文件IO对比
python提供了丰富的三方库可以很方便的操作 excel、txt、图片等文件,如:pandas、 openpyxl、xlwt、xrld、OpenCV、SimpleCV、Pillow,request、json……所以学python其实就是学各种库的使用(泪目)。当然c也有操作文件的函数如 :fopen,但远不及python易用。所以python更多应用在自动化办公领域。但这不代表c不好,只是应用领域不同,毕竟c是和底层做交互。
11、数组和列表对比
其实列表和数组八竿子打不着关系,但是初学者很容易把这两个概念搞混。列表是python的概念,在python中定义列表,列表中内容可以是任意的,甚至混搭,不需要对长度做限定,如下
list = [1, 'string', [1,2], {'name':'干饭小子' , age:18}]
但是在c中就不行了(注意:c中叫数组)。在c中数组长度已事先定义,如果往数组中存入的内容超过长度会丢失数据或修改其他内存空间的数据。且只能存预先定义的类型,如下:只能存 整数。
int list[6] ={1,2,3,4,5,6}
当然c和python的不同远不止这些,这些只是最常见的不同,初学者或者准备在两种语言之间切换的程序袁可以参考,以便更快入门。也避免c和python用法记混。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)