WebSphere Application Server - Express, Version 6.0.x   
             オペレーティング・システム: AIX , HP-UX, Linux, Solaris, Windows

             目次と検索結果のパーソナライズ化

Jython

Jython は、Python の代替インプリメンテーションであり、 すべて Java で書き込まれています。

wsadmin ツールは、Jython V2.1 を使用します。 以下の説明は、Jython 構文の基本的な要約です。

基本関数

関数は、組み込み関数の名前か Jython 関数のいずれかです。 以下に例を示します。
print "Hello, World!"
=> Hello, World!

import sys
sys.stdout.write("Hello World!¥n")
=> Hello World!
例では、print は標準出力ストリームを示しています。 上記の例のように、 import ステートメントを実行することによって組み込みモジュールを使用することができます。 import ステートメントは、モジュール内のコードをインポートの一部として実行し、 モジュール・オブジェクトを戻します。 sys は、Python 言語の組み込みモジュールです。 Python 言語では、モジュールはネーム・スペースであり、 そこでは名前が作成されます。 モジュール内に常駐する名前は属性と呼ばれます。 モジュールはファイルに対応しており、 Python 言語はモジュール・オブジェクトを作成して、 ファイル内に定義されたすべての名前を格納します。 つまり、モジュールはネーム・スペースです。

変数

オブジェクトを名前に割り当てる場合、 割り当てのターゲットは等号 (=) の左側に置き、 割り当てるオブジェクトは右側に置く必要があります。 左側のターゲットは名前またはオブジェクト・コンポーネントとなり、 右側のオブジェクトはオブジェクトを計算する任意の式となります。 オブジェクトを名前に割り当てる際には、以下の規則が存在します。 変数名の規則は、C 言語の規則に似ています。 以下に例を示します。 以下の予約語は、変数名に使用することはできません。
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
=> pretty
2 番目の例では、変数 a の値を変数 b に割り当てています。

タイプと演算子

以下のリストには、組み込みオブジェクトのタイプがいくつか含まれています。 以下のリストには、演算子がいくつか含まれています。

円記号 (¥) 置換

ステートメントが複数行にまたがる必要がある場合は、前の行の末尾に円記号 (¥) を追加して、次の行に継続することを示すこともできます。 以下に例を示します。
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.

関数とスコープ

Jython では、def ステートメントを使用して関数を定義します。 関数に関連するステートメントには、以下のものが含まれます。 関数を定義する基本構文は、以下のとおりです。
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 言語でコメントを作成する場合は、ポンド記号 (#) を使用します。

コマンド行引数

Jython シェルは、 コマンド行引数を sys.argv の値としてスクリプトに渡します。 プログラムまたはスクリプトの名前は、sys.argv の一部ではありません。 sys.argv は配列であるため、index コマンドを使用して 引数リストから項目を抽出します。 以下に例を示します。
import sys
first  =  sys.argv[0]
second  = sys.argv[1]
arglen = len(sys.argv)

基本ステートメント

ループ・ステートメントには、while と for の 2 つがあります。 条件ステートメントは if です。 エラー処理ステートメントは try です。 最後に、制御フローを微調整するステートメントには、 break、continue、および pass があります。 以下に、Python における構文規則のリストを示します。

If

if ステートメントは、実行するアクションを選択します。 if ステートメントは、 他の if ステートメントを含め、その他のステートメントを含むことができます。 if ステートメントは、 後ろに 1 つ以上のオプションの elif ステートメントを続けることができ、 オプションの else ブロックで終了します。

if ステートメントの一般的な書式は、以下のようになります。
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 ステートメントは、テスト式の付いたヘッダー行、 1 つ以上のインデントされたステートメントの本体、 およびオプションの else ステートメントで構成されています。 else ステートメントは、 制御が break ステートメントを検出することなくループを終了した場合に実行されます。 while ステートメントは、 最上部でテストが真の値を評価し続けている限り、 インデントされたステートメントのブロックを繰り返し実行します。 while ステートメントの一般的な書式は、以下のようになります。
while test1
	statements1
else
	statements2
以下に例を示します。
a = 0; b = 10
while a < b:
	print a
	a = a + 1

For

for ステートメントは、 割り当てターゲットを指定するヘッダー行、 およびステップスルーするオブジェクトと一緒に始まります。 ヘッダーの後ろには、反復したいインデントされたステートメントのブロックが続きます。

for ステートメントの一般的な書式は、以下のようになります。
for target in object:
	statements
else:
	statements
これは、シーケンス・オブジェクト内の項目を 1 つずつターゲットに割り当てて、 それぞれのループ本体を実行します。 ループ本体は通常、割り当てターゲットを使用して、 シーケンスをステップスルーしているカーソルのように、 シーケンス内の現在の項目を参照します。 以下に例を示します。
sum = 0
for x in [1, 2, 3, 4]:
 	sum = sum + x

Break、continue、および pass

ループを breakcontinue、 および pass ステートメントで制御できます。 break ステートメントは、最も近い囲みループを飛び越します (ループ・ステートメント全体を越えて)。 continue ステートメントは、最も近い囲みループの先頭 (ループのヘッダー行に) にジャンプし、 pass ステートメントは空ステートメントのプレースホルダーです。

Try

ステートメントは、間違った数の引数を指定して呼び出された場合、 あるいはそのインプリメンテーションに特定のエラー状態を検出した場合、 エラーを起こします。 キャッチされていないエラーは、スクリプトの実行を打ち切ります。 try ステートメントは、そのようなエラーをトラップするために使用されます。 Python の try ステートメントは、2 つの種類に分けられます。 一方は例外を処理し、他方は実行が行われるか否かに関係なく、 ファイナライズ・コードを実行します。 tryexceptelse の各ステートメントは、 try ヘッダー行で始まり、その後ろに、インデントされたステートメントのブロック、 キャッチする例外を指定する 1 つ以上のオプションの except 文節、 および最後にオプションの else 文節が続きます。 tryfinally の各ステートメントは、try ヘッダー行 で始まり、その後ろに、インデントされたステートメントのブロック、 最後に try ブロックの実行中に例外が発生したかどうかに関係なく、 出る途中で常に実行される文節が続きます。

try、except、else の各関数の一般的な書式は、以下のようになります。
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 here
try および 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')
以下を含むスクリプトを作成し、testFunctions.py という名前をつけます。
def printName(first, last):
	name = first + ' ' + last
	return name

次に、スクリプト引数として以下のパスを渡します。

wsadmin -lang jython -f 'c:/temp/script/test1.py'

パス区切り文字にはスラッシュ (/) を使用してください。円記号 (¥) は機能しません。

Jython 言語の詳細については、 スクリプト: 学習用リソースの項目を参照してください。




関連概念
Jacl
関連タスク
スクリプトの入門
関連資料
スクリプト: 学習用リソース
関連情報
http://www.ibm.com/support/docview.wss?rs=180&uid=swg24012144
概念トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 11:31:28 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/index.jsp?topic=/com.ibm.websphere.express.doc/info/exp/ae/cxml_jython.html