Python

14. Pythonの文法(2)

今回もPythonの簡単な文法を少しずつ紹介する。
いすれも簡単なものである。
_

■ 代入するだけで変数は自動的に定義される

多くのオープン系開発言語の変数の定義は
演算の始まりにまとめて宣言することが
良い作法とされているが
Pythonは代入したときに自動的に型が
定義されて宣言される。

[例]

 SFCTL = 'SFCTL01'

… ‘SFCTL01’という文字列を代入しているのだから
SFCTL という名前の変数も文字として定義される。

[例]

ENDRRN = 1
… ENDRRN という変数に数字1を代入しているのであるから
ENDRRN は数字としてここで定義される。

… このようにPythonでは intや char などの型を覚える必要が
ないので定義も容易である。
式の末尾に;(=セミコロン)や: (=コロン)も . (=ピリオド)も
  必要ない。

■ グローバル変数の使用は宣言する

_

 

[例]

  global SFCTL
  SFCTL = 'SFLCTL01'

 … global SFCTL によってSFCTLという変数は
グローバル変数として定義され
SFCTL = ‘SFLCTL01’という文字列の代入によって
SFCTLという変数は文字のグローバル変数として
定義される。

   グローバル変数というのはすべての関数で共通して
使える変数のことである。
これに対してグローバル(global)を宣言しなたった
変数はローカル変数として定義される。
ローカル変数とはその関数内だけで有効な変数であって
他の関数からは参照や更新もされないように
保護されている。
RPG IIIやILE-RPGのサブ・ルーチンはローカル変数いう
概念がないのでメイン・ルーチンもサブ・ルーチンも
同じ変数(=フィールド)を参照したり更新したりすることが
できる。
このためメイン・ルーチンで使用している変数(=フィールド)値が
サブ・ルーチンでも重複して更新されてしまったために
バグの発生となる場合が起こっていたが
PythonやILE-RPGのプロシージャー内のローカル変数を定義しておけば
このような初歩的なバグは発生することはない。

■ for-loopは rangeを使って宣言

 ろ 
 

[例]

 for RRN1 in range(TOPRRN, ENDRRN +1): 

….このように TOPRRN から ENDRRN + 1 までの RRN1 によるLOOPを
   表すことができるる
もちろんLOOPの終わりはインデント(=段落)で示すので
閉じカッコ(」)などは必要ない。
ただし LOOP文の文末には: (=コロン)が必要である。

 これはILE-RPGのフリー・フォーマットのLOOP文に良く似ている。

[ILE-RPGフリー・フォーマット]

  
     FOR RRN1 = TOPRRN TO ENDRRN + 1;