在代碼中深入學習Jython語法
為了更多的了解Jython語法和結構,下面通過分析幾個簡單然而完整的工作程序進行學習。首先是經典的示例程序——Hello World!——它在Jython中如下所示:
清單 1. Jython的Hello World!
- print "Hello World!"
在Jython語法中(就像在Python 中),源文件使用擴展名“ py”?!癏ello 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 源代碼并自動編譯為類文件??梢杂孟旅娴腏ava 命令來運行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語法中的一種用法,在許多語言中也常見。還有許多其他函數可用。
【編輯推薦】