跳至主要內容

python语言

pptg大约 2 分钟

1. python和java、golang的对比

pythonJavaGolang
类型动态强类型静态强类型静态强类型
编译/解释解释型编译为字节码编译为机器码
性能较慢较快很快
并发模型多线程(GIL限制)多线程轻量级协程(goroutine)
弱类型
// JavaScript是弱类型语言
let a = "100";
let b = 50;

// 自动类型转换
let result = a + b;  // ✅ "10050" (字符串连接)
result = a - b;      // ✅ 50 (自动转数字计算)

字节码、机器码

机器码能直接被cpu理解、执行,字节码需要经过编译器转换为机器码,然后再执行。

特性字节码机器码
执行方式虚拟机解释执行CPU直接执行
可读性相对可读不可读
平台依赖跨平台平台相关
生成来源高级语言编译编译器生成
执行速度较慢很快

JIT

简单理解一下,JIT就是"边运行边编译,越跑越快"

想象一个翻译-执行的过程:

  • 解释执行:每句话都要现场翻译(Python的方式)
  • 提前编译:整个文档先翻译好(C++的方式)
  • JIT编译:边翻译边记住常用句子,后面直接使用(Java的方式)

GIL

Python的全局解释器锁(GIL)限制了多线程在CPU密集型任务中的并行能力。由于同一时间只有一个线程可以执行Python字节码,多线程无法充分利用多核CPU的优势。

优化方案:

  • 多进程:创建多个独立的Python进程来绕过GIL限制,每个进程都有自己独立的GIL,从而真正实现多核并行计算
    • multiprocessing 模块:Python标准库中的多进程解决方案,API与threading模块类似
    • concurrent.futures.ProcessPoolExecutor: 基于multiprocessing的高级接口,使用更简单

2. Python2 和 Python3的区别

python2到python3的一些改变让python更一致、安全

python2python3
printprint "hello"print("hello")
整数除法5/2 == 25/2 == 2.5
range/xrange两个都存在,range立即生成只有range,惰性,比如range(1000),只有用到了后面的,才会生成
错误处理except Exception, e:except Exception as e:

3. Python解释器

Python常见解释器如下:

解释器实现语言特点场景
CPythonC官方标准通用
PyPyPythonJIT编译,速度快性能敏感
JythonJavaJVM运行Java集成
IronPythonC#.Net运行.Net集成
MicroPythonC轻量级嵌入式IOT