Jython は、Python の代替インプリメンテーションであり、 すべて Java で書き込まれています。
wsadmin ツールは、Jython V2.1 を使用します。 以下の説明は、Jython 構文の基本的な要約です。
基本関数
print "Hello, World!" => Hello, World! import sys sys.stdout.write("Hello World!¥n") => Hello World!例では、print は標準出力ストリームを示しています。 上記の例のように、 import ステートメントを実行することによって組み込みモジュールを使用することができます。 import ステートメントは、モジュール内のコードをインポートの一部として実行し、 モジュール・オブジェクトを戻します。 sys は、Python 言語の組み込みモジュールです。 Python 言語では、モジュールはネーム・スペースであり、 そこでは名前が作成されます。 モジュール内に常駐する名前は属性と呼ばれます。 モジュールはファイルに対応しており、 Python 言語はモジュール・オブジェクトを作成して、 ファイル内に定義されたすべての名前を格納します。 つまり、モジュールはネーム・スペースです。
変数
and assert break class continue def del elif else except exec finally for from global if import in is lambda not or pass print raise return try while以下に例を示します。
a = 5 print a => 5 b = a print b => 5 text1, text2, text3, text4 = 'good', 'bad', 'pretty', 'ugly' print text3 => pretty2 番目の例では、変数 a の値を変数 b に割り当てています。
タイプと演算子
8, 3.133, 999L, 3+4j num1 = int(10) print num1 => 10
'name', "name's", '' print str(12345) => '12345'
x = [1, [2, 'free'], 5] y = [0, 1, 2, 3] y.append(5) print y => [0, 1, 2, 3, 5] y.reverse() print y => [5, 3, 2, 1, 0] y.sort() print y => [0, 1, 2, 3, 5] print list("apple") => ['a', 'p', 'p', 'l', 'e'] print list((1,2,3,4,5)) => [1, 2, 3, 4, 5] test = "This is a test" test.index("test") => 10 test.index('s') => 3
y は、x が偽である場合にのみ評価されます。 以下に例を示します。
print 0 or 1 => 1
y は、x が真である場合にのみ評価されます。 以下に例を示します。
print 0 and 1 => 0
加算と連結、減算。 以下に例を示します。
print 6 + 7 => 13 text1 = 'Something' text2 = ' else' print text1 + text2 => Something else list1 = [0, 1, 2, 3] list2 = [4, 5, 6, 7] print list1 + list2 => [0, 1, 2, 3, 4, 5, 6, 7] print 10 - 5 => 5
乗算と反復、除算、剰余と形式。 以下に例を示します。
print 5 * 6 => 30 print 'test' * 3 => test test test print 30 / 6 => 5 print 32 % 6 => 2
指標付け、スライス、関数呼び出し。 以下に例を示します。
test = "This is a test" print test[3] => s print test[3:10] => s is a print test[5:] => is a test print x[:-4] => This is a print len(test) => 14
比較演算子、識別テスト。 以下に例を示します。
l1 = [1, ('a', 3)] l2 = [1, ('a', 2)] l1 < l2, l1 == l2, l1 > l2, l1 <> l2, l1 != l2, l1 is l2, l1 is not l2 => (0, 0, 1, 1, 1, 0, 1)
円記号 (¥) 置換
text = "This is a tests of a long lines" ¥ " continuing lines here." print text => This is a tests of a long lines continuing lines here.
関数とスコープ
def ステートメントは、 関数 object を作成してそれを名前に割り当てます。 return ステートメントは、結果オブジェクトを呼び出し元に戻します。 これはオプションであり、これがない場合は関数が終了するため、 制御フローは関数本体の終端で途切れます。
global ステートメントは、 割り当てるモジュール・レベルの変数を宣言します。 デフォルトでは、関数内に割り当てられた名前はすべて、 その関数に対してローカルであり、その関数が実行している間のみ存在します。 名前を囲みのモジュール内に割り当てるには、 関数を global ステートメントの中にリストします。
def name (arg1, arg2, ... ArgN): statements return valueここで、name は、定義される関数の名前です。 その後に、開き括弧、閉じ括弧、およびコロンが続きます。 括弧内の引数には、プロシージャーに対するパラメーターのリストなどがあります。 コロンの後ろにある次の行は、関数の本体です。 コマンドのグループが関数の本体を形成しています。 Jython 関数は定義されると、他の組み込み関数の場合と同様に使用されます。 以下に例を示します。
def intersect(seq1, seq2): try: res = [] for x in seq1: if x in seq2: res.append(x) return res except:上記の関数を呼び出すには、以下のコマンドを使用します。
s1 = "SPAM" s2 = "SCAM" intersect(s1, s2) => [S, A, M] intersect([1,2,3], (1.4)) => [1]
コメント
Jython 言語でコメントを作成する場合は、ポンド記号 (#) を使用します。
コマンド行引数
import sys first = sys.argv[0] second = sys.argv[1] arglen = len(sys.argv)
基本ステートメント
If
if ステートメントは、実行するアクションを選択します。 if ステートメントは、 他の if ステートメントを含め、その他のステートメントを含むことができます。 if ステートメントは、 後ろに 1 つ以上のオプションの elif ステートメントを続けることができ、 オプションの else ブロックで終了します。
if test1 statements1 elif test2 statements2 else test3 statements3以下に例を示します。
weather = 'sunny' if weather == 'sunny': print "Nice weather" elif weather == 'raining': print "Bad weather" else: print "Uncertain, don't plan anything"
While
while test1 statements1 else statements2以下に例を示します。
a = 0; b = 10 while a < b: print a a = a + 1
For
for ステートメントは、 割り当てターゲットを指定するヘッダー行、 およびステップスルーするオブジェクトと一緒に始まります。 ヘッダーの後ろには、反復したいインデントされたステートメントのブロックが続きます。
for target in object: statements else: statements
sum = 0 for x in [1, 2, 3, 4]: sum = sum + x
Break、continue、および pass
ループを break、continue、 および pass ステートメントで制御できます。 break ステートメントは、最も近い囲みループを飛び越します (ループ・ステートメント全体を越えて)。 continue ステートメントは、最も近い囲みループの先頭 (ループのヘッダー行に) にジャンプし、 pass ステートメントは空ステートメントのプレースホルダーです。
Try
ステートメントは、間違った数の引数を指定して呼び出された場合、 あるいはそのインプリメンテーションに特定のエラー状態を検出した場合、 エラーを起こします。 キャッチされていないエラーは、スクリプトの実行を打ち切ります。 try ステートメントは、そのようなエラーをトラップするために使用されます。 Python の try ステートメントは、2 つの種類に分けられます。 一方は例外を処理し、他方は実行が行われるか否かに関係なく、 ファイナライズ・コードを実行します。 try、except、else の各ステートメントは、 try ヘッダー行で始まり、その後ろに、インデントされたステートメントのブロック、 キャッチする例外を指定する 1 つ以上のオプションの except 文節、 および最後にオプションの else 文節が続きます。 try、finally の各ステートメントは、try ヘッダー行 で始まり、その後ろに、インデントされたステートメントのブロック、 最後に try ブロックの実行中に例外が発生したかどうかに関係なく、 出る途中で常に実行される文節が続きます。
try: statements except name: statements except name, data: statements else statements以下に例を示します。
try: myfunction() except: import sys print 'uncaught exception', sys.exc_type, sys.exc_value try: myfilereader() except EOFError: break else: process next line heretry および finally ステートメントの一般的な書式は、以下のようになります。
try: statements finally: statements
def divide(x, y): return x / y def tester(y): try: print divide(8, y) finally: print 'on the way out...'
Jython スクリプトを別の Jython スクリプトから呼び出すには、 execfile コマンドを使用します。以下に例を示します。
以下を含むスクリプトを作成し、test1.py という名前を付けます。
execfile('c:/temp/script/testFunctions.py') print printName('Cathy', 'Smith')
def printName(first, last): name = first + ' ' + last return name
次に、スクリプト引数として以下のパスを渡します。
wsadmin -lang jython -f 'c:/temp/script/test1.py'
パス区切り文字にはスラッシュ (/) を使用してください。円記号 (¥) は機能しません。
Jython 言語の詳細については、 スクリプト: 学習用リソースの項目を参照してください。