近年来,python语言一直很受大家欢迎,所以我也想学习了解python语言,但总有许多问题在学习。因为我只知道汇编和C语言,我想了解python和我常用的C语言的区别,有哪些优势,哪些领域可以用于在学习之前。差异:1。C是一种编译语言,Python是一种解释语言。这一点已经被其他受访者提到,这确实是一个重要的区别。编译和解释型之间最大的区别在编程,没有必要写一个入口函数。C语言是主要的,但Python不需要写。编译后的类型是\u201C静态\u201D的优势,逐行代码不能编译和执行,必须整理和项目作为一个整体,从而促进了类型检查和减少运行时错误率;运行时效率较高,因为编译器可以协调各个方面和产生更多的优化机器指令;

解释型语言的优点是\u201C动态\u201D,可以独立地执行每一行代码(代码块除外)。通过这种方式,可以灵活地进行实时交互,可以调整,运行的程序和实时和异步可以进行调试。例如,Python的CLI(命令行交互接口)可以直接输入Python代码执行。这是困难的编译语言如C语言(C的实时计算表达式可以在调试模式下进行的,但它不能实现一种解释型语言的灵活性)。解释型语言的特点也使其适合脚本语言。两人彼此缺点的优势。编译类型需要大量的编译时间,不够灵活。在大型项目中,需求的变化会导致巨大的编译时间。但这是运营效率的补偿,没有其他更大的缺点。解释型语言一直批评相对更多。例如,因为他们不能提前编译,他们必须解释(本质上,一个单行的编译)成机器代码在执行之前,因此,效率低得多。

pyc文件编译语言。如果源文件不变,下次可以直接执行的字节码文件,从而提高操作效率。此外,解释语言很难实现静态类型检查,所以他们倾向于运行时错误,所以他们比较适合大型项目。事实上,它是不可能有一个编译语言,支持命令行interaction-Haskell真是个异类。它不仅能在一行被执行,它甚至可以做静态类型检查,这将在稍后提到的。2. C是弱类型和静态类型检查,Python是强类型和动态类型检查。对于那些不知道,这种说法可能会引起问题。让我们看看一个接一个。C是一种弱类型?各种各样的\u201C类型不匹配\u201D会让我疯狂,这是仍然疲软吗?到底是\u201C静态类型检查\u201D?要理解这个问题,我们必须首先了解C语言的性质类型:一定长度的字节。

有点复杂,有数组和结构,这只是几个整数或浮点数的组合。这种简单性和无礼因为C很早就出生。当时,冯·诺依曼的高级语言系统大多是接近集会,组装没有类型,只有不同长度的字节。在Python中,您不能看到区别int, unsigned int,和长时间,因为它简化了整数类型的不同长度,并自动扩展如果超过长度。离开了。知道在C类型基本上是各种各样的整数,你能想到的所有类型的整数,可以相互转换:int转换为长很容易理解,char和int也经常互相转换,然后你认为int和任何类型的指针可以投吗?这是因为int是最常用的整数类型,和地址也是最重要的机器整数。你也知道,void *可以转换为指针类型吗?事实上,所有指针可以任意相互转换,这意味着看似严格的C类型系统实际上并不限制你滥用它。

如果可以变成不同的指针呢?在Python中我们知道一个对象的属性和方法的集合,这是类似于c的结构相当于一个指针对象的名称的实体memory-equivalent指向结构的指针。指针可以转换不同的结构,这意味着\u2026\u2026是的,一个变量名可以代表任何对象。这难道不是一个弱类型?静态类型检查是什么?是的,它是让你遭受编译错误。我说,编译语言是\u201C静态\u201D,所以静态类型检查只能实现编译语言(如前所述,Haskell是一个混合,这是一个汇编语言,但它可以执行一行)。C需要你写每一个变量的类型和函数,类型检查。然而,没有必要马克静态类型检查的类型(比如Haskell,它几乎完全没有必要写)。

但是你叫它\u201C强类型\u201D?我不相信,\u201C强类型语言可以将任意的值分配给变量?如前所述,这个变量存储的对象实际上是对象在内存的地址(\u201C价值类型\u201D,如一个小整数,一般直接存储值)。变量存储在\u201C堆栈\u201D,对象被放置在\u201C堆\u201D。\u201C栈\u201D整齐的叠放一个接一个地和\u201C栈\u201D是随机打开。当我们执行一个语句如= (1、2、3),Python运行时环境中生成一个新的列表对象\u201C堆\u201D,返回对象的第一个地址,并赋予它新的变量,把它压入堆栈。之后,如果一个执行= {\u201Cx\u201D: 1},它只会取代的地址在一个字典对象。

和相同的指针可以指向任何东西,为什么Python强类型?因为Python对象类型信息。如果你添加一个整数字符串,它将报告这个错误:这表明,Python会在运行时类型检查对象。事实上,这并不足以解释这个问题,因为这个加号不能用于int和str可能只是一个语义检查。然后你可以想想当你调用一个方法,不存在一个对象。显然,将报告一个错误。更说明是这样的:这表明Python的类型检查甚至强于C,甚至浮动不会隐式转换为int。这肯定不是一个编译器的行为,因为内置函数所对应不显示参数类型时宣布。虽然版本允许类型声明,Python不会报告错误在此基础上。此外,真正的弱类型语言JavaScript时不会报告错误字符串添加到上面的整数,调用不存在的方法,和通过整数参数浮点数。

(补充:更彻底的弱类型语言(如Lisp,甚至是弱类型的机器上)3。Python是一种本地语言支持面向对象范型,C。我没有说\u201CPython是一种面向对象语言,C是一个面向过程的语言\u201D,因为面向对象和面向过程的编程模型和想法,Python程序也可以写的很\u201C进程\u201D,和C也有许多方法来实现\u201C面向对象\u201D。但Python本身支持面向对象范型,类的封装,继承,多态方法。C语言实现面向对象的特性,需要一些技巧。知有一个答案,我得到了很多灵感的首次PDF的链接。答案是不再可用,但PDF仍然存在,这本书的标题是\u201C面向对象的ansi c\u201D。

有很多人,但是他们不涉及编程范式的核心。包括但不限于: