2.2. 関数の宣言

Python は他のほとんどの言語と同じように関数を持っています. しかし, C++ のような分離されたヘッダファイルはありませんし, Pascal のような interface/implementation 節もありません. 関数が必要なときは, 単に以下のように宣言すれば良いのです.


def buildConnectionString(params):

def というキーワードから関数宣言が始まっていることに注意しましょう. それに関数名が続き, 括弧で括られた引数が続きます. (ここには表れていませんが,) 複数の引数はカンマで区切られます.

また, 関数は返り値型を定義しないことにも注意しましょう. Python の関数は返り値の方を指定することはありませんし, 返り値があるかどうかについてさえ決めることはしません. 実際, 全ての Python の関数には返り値があります. 関数が return 文を実行しているところがあればその値を返しますし, そうでなければ None という Python で言う null 値が帰ります.

Note
Visual Basic では, 関数 (つまり値を返すもの) の宣言は function で始まり, サブルーチン (値を返さないもの) の宣言は sub で始まります. Python にはサブルーチンはありません. 全ては関数であり, 全ての関数は (たとえそれが None だとしても) 値を返し, 宣言は def で始まります.

引数の params ではデータ型を指定しません. Python では, 変数の型は決して明示されることはありません. Python は内部で変数がどんな型なのか把握し, 見失うことはありません.

Note
Java, C++ や他の静的型付き言語では, 関数の返り値と個々の引数のデータ型を指定しなくてはいけません. Python では, どれもデータ型を明示することはありません. どの値を割り当てたかによって, Python は内部でデータ型の情報を得ています.

2.2.1. 他のプログラミング言語と比較した Python のデータ型の位置付け

ある博識な読者が, 以下のような他のプログラミング言語と比較した Python のデータ型の位置付けの説明を送ってくれました.

静的型付き言語
コンパイル時に型が決定する言語. ほとんどの静的型付き言語は, 全ての変数に対し使用する前にデータ型と一緒に宣言するよう求めることで, これを実現しています. JavaC は静的型付き言語です.
動的型付き言語
静的型付き言語とは逆に, 実行時に型が判明する言語. 初めて値を割り当てたときに変数の型が分かるので, VBScriptPython は動的型付き言語です.
強い型付き言語
型が常に強制される言語. JavaPython は強い型付き言語です. 整数があったときに, それを明示的な変換無しに文字列のようには扱えません.
弱い型付き言語
強い型付き言語とは逆に, 型が無視される可能性がある言語. VBScript は弱い型付き言語です. VBScript では, 文字列 '12' と整数 3 を連結すると '123' が得られ, さらにそれを整数 123 としても扱え, これらの操作に明示的な型変換は不要です.

なので Python は (明示的なデータ型の宣言を行わないので)動的型付き言語であり, (変数の型が決定するとそれが効いてくるので)強い型付き言語でもあります.