C和Python语言编译模式对比

# C语言编译过程
源代码(.c) → 汇编(.s) → 目标文件(.o) → 可执行文件(.exe)
特点:
- 直接编译成机器码
- 可以直接被CPU执行
- 运行速度最快
- 平台相关(不同CPU架构需要重新编译)

# Python编译过程
源代码(.py) → 字节码(.pyc) → Python虚拟机(PVM)执行
特点:
- 编译成字节码(中间码)
- 需要Python解释器执行
- 运行速度相对较慢
- 跨平台(只要有Python环境就能运行)

# 对比示例
C语言:
```c
// hello.c
int main() {
    int sum = 0;
    for(int i = 0; i < 100; i++) {
        sum += i;
    }
    return sum;
}

编译后的汇编代码:

main:
    push    rbp
    mov     rbp, rsp
    mov     DWORD PTR [rbp-8], 0   # sum = 0
    mov     DWORD PTR [rbp-4], 0   # i = 0
    jmp     .L2
.L3:
    mov     eax, DWORD PTR [rbp-4]
    add     DWORD PTR [rbp-8], eax
    add     DWORD PTR [rbp-4], 1
.L2:
    cmp     DWORD PTR [rbp-4], 99
    jle     .L3
    mov     eax, DWORD PTR [rbp-8]
    pop     rbp
    ret

Python:

# hello.py
def main():
    sum = 0
    for i in range(100):
        sum += i
    return sum

字节码(.pyc中的内容):

# 使用dis模块查看字节码
import dis
dis.dis(main)

输出类似:
  2           0 LOAD_CONST               1 (0)
              2 STORE_FAST               0 (sum)
              
  3           4 SETUP_LOOP              26 (to 32)
              6 LOAD_GLOBAL              0 (range)
              8 LOAD_CONST               2 (100)
             10 CALL_FUNCTION            1
             12 GET_ITER
        >>   14 FOR_ITER                14 (to 30)
             16 STORE_FAST               1 (i)

主要区别:

  1. 编译结果:
    • C语言编译到机器码(最底层)
    • Python编译到字节码(中间层)
  1. 执行方式:
    • C语言直接被CPU执行
    • Python需要解释器解释执行
  1. 性能特点:
    • C语言运行最快
    • Python牺牲速度换取开发效率
  1. 跨平台:
    • C语言需要重新编译
    • Python字节码可跨平台使用

所以说它们确实类似,都是把源代码转换成更容易执行的格式,但层次和目的有所不同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值