- Python:所有导入的模块和对象都存储在全局命名空间中。
- Jython:导入的 Java 包和类也被存储在全局命名空间中,但需要显式使用 Java 约定访问。
关键字
- Python:none、true、false 是保留关键字。
- Jython:none、true、false 不是关键字;相反,使用相应的 Java 原始类型 null、True、False。
导入
- Python:使用 import 关键字或 from...import 语句导入模块和对象。
- Jython:可以通过 import java 语句或 from java.package.module import 语句导入 Java 包和类。
类定义
- Python:使用 class 关键字定义类,而构造函数使用 def init(self, ...) 声明。
- Jython:可以使用 class 关键字定义类,但由于继承 Java Object 类,不需要构造函数。
继承
- Python:使用继承 (class B(A):) 关键字从超类继承。
- Jython:使用 Java 的 extends 关键字继承类 (class B extends A)。
方法
- Python:方法在类内使用 def 函数定义。
- Jython:方法也可以使用 Java 符号定义,例如方法重载 (def foo(self, a) 和 def foo(self, a, b))。
静态方法
- Python:使用 @staticmethod 装饰器定义静态方法。
- Jython:使用 Java 的 static 修饰符定义静态方法。
异常处理
- Python:使用 try...except...finally 块进行异常处理。
- Jython:还可以使用 Java 的 try...catch...finally 块。
字符串
- Python:字符串使用单引号或双引号表示。
- Jython:字符串也支持 Java 的反斜杠转义序列。
数据类型
- Python:int、float、str 等数据类型是内置类型。
- Jython:除了 Python 数据类型,还支持 Java 原始类型,如 int、float、boolean。
文件处理
- Python:使用 open() 函数打开文件并使用 with 语句自动关闭。
- Jython:可以使用 Java 的 FileInputStream 和 FileOutputStream 类进行文件处理。
其他差异
- Python:使用缩进来指示块。
- Jython:可以使用 Java 的大括号 { } 来指示块。
- Python:使用 lambda 表达式创建匿名函数。
- Jython:可以使用 Java 的匿名类或 lambda 表达式。
- Python:支持列表解析。
- Jython:不支持列表解析;相反,可以使用 Java 8 的流 API。