python语言
大约 2 分钟
1. python和java、golang的对比
| python | Java | Golang | |
|---|---|---|---|
| 类型 | 动态强类型 | 静态强类型 | 静态强类型 |
| 编译/解释 | 解释型 | 编译为字节码 | 编译为机器码 |
| 性能 | 较慢 | 较快 | 很快 |
| 并发模型 | 多线程(GIL限制) | 多线程 | 轻量级协程(goroutine) |
弱类型
// JavaScript是弱类型语言
let a = "100";
let b = 50;
// 自动类型转换
let result = a + b; // ✅ "10050" (字符串连接)
result = a - b; // ✅ 50 (自动转数字计算)
强类型
# Python是强类型语言
a = "100"
b = 50
# 不能自动转换类型
result = a + b # ❌ TypeError: 不能把字符串和数字相加
# 必须显式转换
result = int(a) + b # ✅ 150
字节码、机器码
机器码能直接被cpu理解、执行,字节码需要经过编译器转换为机器码,然后再执行。
| 特性 | 字节码 | 机器码 |
|---|---|---|
| 执行方式 | 虚拟机解释执行 | CPU直接执行 |
| 可读性 | 相对可读 | 不可读 |
| 平台依赖 | 跨平台 | 平台相关 |
| 生成来源 | 高级语言编译 | 编译器生成 |
| 执行速度 | 较慢 | 很快 |
JIT
简单理解一下,JIT就是"边运行边编译,越跑越快"
想象一个翻译-执行的过程:
- 解释执行:每句话都要现场翻译(Python的方式)
- 提前编译:整个文档先翻译好(C++的方式)
- JIT编译:边翻译边记住常用句子,后面直接使用(Java的方式)
GIL
Python的多线程安全锁,但限制了多核性能。
这里python 3.14 摆脱了GIL
2. Python2 和 Python3的区别
python2到python3的一些改变让python更一致、安全
| python2 | python3 | |
|---|---|---|
| print "hello" | print("hello") | |
| 整数除法 | 5/2 == 2 | 5/2 == 2.5 |
| range/xrange | 两个都存在,range立即生成 | 只有range,惰性,比如range(1000),只有用到了后面的,才会生成 |
| 错误处理 | except Exception, e: | except Exception as e: |
3. Python解释器
Python常见解释器如下:
| 解释器 | 实现语言 | 特点 | 场景 |
|---|---|---|---|
| CPython | C | 官方标准 | 通用 |
| PyPy | Python | JIT编译,速度快 | 性能敏感 |
| Jython | Java | JVM运行 | Java集成 |
| IronPython | C# | .Net运行 | .Net集成 |
| MicroPython | C | 轻量级嵌入式 | IOT |