为了更多的了解Jython语法和结构,下面通过分析几个简单然而完整的工作程序进行学习。首先是经典的示例程序——Hello World!——它在Jython中如下所示:
清单 1. Jython的Hello World!
- print "Hello World!"
在Jython语法中(就像在Python 中),源文件使用扩展名“ py”。“Hello World”语句放在 hello.py 之类的源文件中时,就是一个完整的程序。
作为比较,看一下等效的Java 程序,看看下面的hello.java 文件:
清单 2. Java的Hello World!
- public class hello {
- public static void main(String[] args) {
- System.out.println("Hello World!");
- }
- }
Jython语法显然格式更简单,通常都是如此。Jython语法好的方面当然是代码可以直接解释,也可以翻译成Java 源代码并自动编译为类文件。可以用下面的Java 命令来运行Hello World 程序:
- C:\>java -Dpython.home=C:\jython-2.1 -cp C:\jython-2.1\jython.jar
- org.python.util.jython hello.py
也可以用下面更方便的Jython 脚本运行这个程序:
- C:\>jython hello.py
回显,回显,echo.py!
然后,尝试一个增加了一些功能的示例,这是一个小程序,它允许您回显(echo)命令行参数。对于程序echo,使用以下代码(这些代码在echo.py 中):
清单 3. 回显命令行参数的示例程序
- import sys
- count = 1
- for arg in sys.argv[1:]:
- print 'Argument %i=%s' % (count, arg)
- count += 1
同样,这个完整的Jython程序揭示了Jython语法的一些关键特性。要注意的***件事是每一行就是一个语句——不需要分号(;)来结束这些行——并且变量没有声明。
您还应当注意在Jython语法中,命令行参数是通过内置符号sys.argv 访问的,它是一系列字符串。sys是一个标准模块,它包含有用的值和函数,还有其他许多标准模块可供使用。***个argv 元素(0 )是程序名(即echo.py)。要跳过它,取走argv 列表的片段,实际开始位置为一(1),然后迭代直到列表的***。
另外,在Jython语法中,循环是通过 for 语句组实现的。 for 语句正文是 for 之后缩进的那些行。print 语句示范了使用Jython 的字符串格式编排功能(类似于 C/C++ 的 printf 和 Java 1.5 的新的 print 功能)。
还可以更精确地将上述代码写为以下形式:
- from sys import argv
- for i in range(1, len(argv)): print 'Argument %i=%s' % (i, argv[i])
在这个示例中,使用range 以索引sys.argv 列表。因为 argv 变量是直接导入的,所以不需要限定。注意argv 列表的长度是通过len 函数而不是作为方法获得的,这是Jython语法中的一种用法,在许多语言中也常见。还有许多其他函数可用。
【编辑推荐】