Java程序员学Python学习笔记四:从JVM到Python解释器——模块化与类设计的思维迁移

64 阅读1分钟

一、模块化设计(对比Java包)

  1. 模块是什么

    • 一个.py文件即模块(如utils.py
    • 包含函数的集合(类似Java的静态工具类)
  2. 导入方式

# 导入整个模块(类似Java的import com.utils.*)  
import utils  
utils.encrypt(data)  

# 导入特定函数(类似Java静态导入)  
from utils import encrypt  
encrypt(data)  

二、类与self的本质(对比Java的this

核心代码对比

# Python  
class User:  
    def __init__(self, name):  
        self.name = name    # self指向当前实例  

    def login(self):  
        print(f"{self.name} logged in")  
// Java  
public class User {  
    private String name;  
    public User(String name) {  
        this.name = name;   // this指向当前实例  
    }  
    public void login() {  
        System.out.println(this.name + " logged in");  
    }  
}  

关键差异

  • self显式传递的实例引用(Python自动填充)
  • 方法定义必须声明self参数(Java的this隐式存在)

三、JVM与Python解释器对比

特性JVMPython解释器
执行模式编译字节码 + JIT优化解释执行 + 字节码缓存(.pyc)
跨平台"Write Once, Run Anywhere"依赖解释器版本
内存管理分代垃圾回收引用计数 + 分代GC
多语言支持Java/Scala/Kotlin主攻Python(可通过C扩展)

转型建议

  • 理解动态类型:Python无需声明变量类型(name = "Alice"
  • 善用魔术方法:__str__替代Java的toString()
  • 模块化优先:用包组织代码而非过度设计类层次结构

四、结束语

学习比较到此结束,希望对你有用。