您好,登錄后才能下訂單哦!
小編給大家分享一下Jython怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Jython應用實例一、回顯,回顯,echo.py!
嘗試一個增加了一些功能的示例,這是一個小程序,它允許您回顯(echo)命令行參數。對于程序echo,使用以下代碼(這些代碼在echo.py中):
清單1. 回顯命令行參數的示例程序
import sys count = 1 for arg in sys.argv[1:]: print 'Argument %i=%s' % (count, arg) count += 1
同樣,這個完整的Jython程序揭示了Jython的一些關鍵特性。要注意的***件事是每一行就是一個語句——不需要分號(;)來結束這些行——并且變量沒有聲明。
您還應當注意命令行參數是通過內置符號sys.argv訪問的,它是一系列字符串。sys是一個標準模塊,它包含有用的值和函數,還有其他許多標準模塊可供使用。***個argv元素(0)是程序名(即echo.py)。要跳過它,取走argv列表的片段,實際開始位置為一(1),然后迭代直到列表的***。
循環是通過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的一種用法,在許多語言中也常見。還有許多其他函數可用。
Jython應用實例二、利用factorial.py進行階乘!
我們用高速緩存階乘計算器factorial.py作為類定義的練習,如清單2所示。
清單2. 高速緩存階乘計算器
class Factorial: ''' A factorial calculator ''' seen = {} # cache of prior calculated values def __init__ (self, value): self.__value = value def compute (self, value=None): ''' calculate the result ''' if value is None: value = self.__value # default if value < 0: # bad arg! raise ValueError, 'arg < 0' elif value < 2: # base case return 1L # insure long integers are used else: # need to calculate if not value in Factorial.seen.keys(): # not done before? # calculate this value and cache it Factorial.seen[value] = value * \ Factorial(value - 1).compute() return Factorial.seen[value] # get value from the cache
這里可以看到Jython的許多新特性。首先,用明確的(#)標識引入注釋。一個類或者方法可以有文檔注釋字符串(可以用使用用法類似于JavaDoc的工具進行處理)作為其***行。與賦值不同,語句是用關鍵字引入的。類和方法正文沒有包圍在定界符中,而是由縮進的正文來體現。
而且,類是用class語句聲明的。def語句引入方法。類特性是用類中的賦值創建的,而實例特性是用構造函數方法__init__中的賦值創建的。seen變量是一個字典。實例是將類對象作為函數調用而創建的。方法是用點(.)運算符調用的。
您還會注意到self變量是方法的接收器(就像Java語言中的this),在方法中,所有對實例特性或者類的方法的引用都必須用self限定。類變量(像在Java語言中一樣)是用類名限定的。
函數可以有默認參數,如compute函數的值參數所示。如果沒有給出參數值,就使用__value實例特性。
現在,顯然可以看出Jython支持Java語言的所有功能,但是有時使用了不同的語法。例如,Jython的raise語句與Java語言的throw語句是相同的。
測試factorial.py
可以用下面的代碼測試這個Factorial類,可以在文件factorial.py中找到這些代碼(請參閱參考資料):
if __name__ == "__main__": from sys import argv if len(argv) == 1: vals = range(10) elif len(argv) == 2: vals = range(int(argv[1])) elif len(argv) == 3: vals = range(int(argv[1]), int(argv[2])) else: print " Incorrect range"; vals = () for i in vals: print "Factorial(%i)=%i" % (i, Factorial(i).compute()) print "Cache:", Factorial.seen
在Jython中,可以結合類定義和測試用例。上述if __name__……測試使得只有當文件作為命令運行時才運行測試用例代碼。還可以用另一個文件引入這個文件,以重復使用Factorial類但不必運行測試用例。測試用例包含幾個簡單的命令參數處理,然后是一個循環,它計算指定值(如果有的話)的階乘。***,打印出緩存的值。jython factorial.py 5 10命令生成以下輸出:
Factorial(5)=120 Factorial(6)=720 Factorial(7)=5040 Factorial(8)=40320 Factorial(9)=362880 Cache: {9: 362880L, 8: 40320L, 7: 5040L, 6: 720L, 5: 120L, 4: 24L, 3: 6L, 2: 2L}
您可能還注意到上述示例中可以用Jython long(###L)類型計算不定長度整數。
以上是“Jython怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。