PythonとC言語の関数について使い方と違いを押さえよう!!
PythonとC言語の関数について使い方について違いをまとめています。PythonとC言語の関数の使い方に大きな差はありません。関数の定義の方法に少し違いがあるだけですので簡単に理解することができます。
PythonとC言語の関数の使い方の違いについて
今回はPythonとC言語の関数の違いについて学習します。
目次
01. PythonとC言語の関数について
02. PythonとC言語の関数の宣言と定義について
03. PythonとC言語の値渡しについて
04. PythonとC言語の再起について
05. まとめ
01. PythonとC言語の関数について
一般に関数とはf(v)のように式で使えるようにしたものをいいます。
fを関数名といいいます。
実際にその値を計算することを、その関数の呼び出しといいvをその呼び出しの引数といいます。
呼び出した結果得られる値を戻り値といいます。
あらかじめ用意されているprintfやscanfなどは標準関数と言います。
自分で設定する関数はユーザ関数といいます。
C言語の関数について前提となる知識に触れておきます。
C言語のプログラムにはmain関数が必要です。
これはどんなに小さなプログラムでもmain関数がなければなりません。
main関数が満たすべき条件
・int型の戻り値を持つ
・引数は取らないか2個持つかのいずれかでなければならない
・C言語のプログラムを実行することはmain関数を呼び出すことに等しい
C言語でプログラムを書くときはmain関数の中にプログラムを作成していきます。
main関数の戻り値はプログラムの実行に障害が生じたか否かを表すと解釈されます。
main関数の戻り値は基本的に0となるようなプログラムを作りましょう。
戻り値が0であれば普通にプログラムが終了したと解釈されます。
ちなみに関数は、モジュールといって関数を定義したいくつかのCファイルに分けて呼び出すことも可能です。
モジュールの呼び出しは、C言語でもPythonでも基本的にプログラムの1番最初にimportやincludeなどで外部ファイルをインポートします。
02. PythonとC言語の関数の宣言と定義について
C言語から関数の宣言と定義について学んでいきましょう。
C言語では関数を実際に定義する前にしなければならないことがあります。
それは関数のプロトタイプ宣言です。
あらかじめ戻り値のデータ型と引数のデータ型を指定します。
このように関数のプロトタイプ宣言を行います。
関数の引数は与える値で戻り値は計算によって得られた結果です。
voidは戻り値がないことを示します。
このようにして関数を定義することができます。
適切に定義した関数はこのようにして呼び出すことができます。
関数の基本はこれだけ押さえておけば大丈夫です。
あとは自分で処理を書いて呼び出して値をゲットするだけです。
次にPythonの関数の定義について学習していきます。
Pythonで関数はdefで定義することができます。
defで定義した関数はC言語と同じように引数を与えて呼び出すことが可能です。
Pythonにはmain関数や関数のプロトタイプ宣言はありません。
defで定義してそのまま呼び出して使用することができます。
Pythonでもモジュールやライブラリといった関数を定義した外部ファイルは多数存在しますし、作成することも可能です。
C言語と同じようにプログラムの最初の方にimportでインポートしてしまえば全て利用することができます。
ちなみにPythonではreturnに何も書かなかった場合はNoneを返します。
つまりC言語と同じように0を返しているということです。
Pythonには関数の種類が他にもいくつかあります。
これから触れていきます。
ついでにPythonのグローバル変数とローカル変数について押さえましょう。
グローバル変数は関数の外で定義された変数のことを指します。
global宣言をして変更を加えることが可能です。
ちなみにローカル変数は関数の中で定義された変数です。
global()とlocal()は、それぞれグローバル変数とローカル変数を辞書型で返します。
ラムダ式(lambda)は名前のない関数を作ることができます。
なおラムダ式は式として扱われます。
イテレータ(iterator)はfor文で使用することができる繰り返し機能を持つオブジェクトです。
ジェネレータ(yield)はイテレータを返すジェネレータを定義するときに使用されます。
デコレータ(@)は関数を実行する前後に特殊な処理を実行したい場合に使用します。
03. PythonとC言語の値渡しについて
C言語の関数の呼び出しではすべてその計算した結果が関数に渡されます。
関数から戻される値は戻り値だけです。
この考え方を値渡しといいます。
例えば2つの与えられた引数をそのまま入れ替えて値を返すプログラムがあったとします。
そのプログラムで宣言された引数は関数に与えられ、入れ替えられて値が返しますが、main関数で定義された引数の値は入れ替わっていません。
つまり関数に与えられる引数はmain関数の中で宣言された引数のコピーでしかないというわけです。
関数によって元の引数の値を変更することはできないということになります。
PythonとC言語の両方で基本的な考え方として対応しているので覚えておきましょう。
04. PythonとC言語の再帰について
再帰呼び出しとは、例として関数f()のなかで関数f()を呼び出すことです。
再帰とはある事柄を呼び出すのにその事柄自身を使用することをいいます。
再帰処理を問題なく行うことができる関数は帰納的特性を持っている必要があります。
少し数学的で難しい内容になってしまいますが漸化式をイメージするといいと思います。
PythonでもC言語でも再帰の話は出てきます。
コードを見て直感的に理解した方がわかりやすいと思います。
例として2進表現をするコードの関数定義部分を用いて理解の助けにして下さい。
nが1以下になるまで関数自身が再帰的に呼び出されます。
for文とは違った目に見えない繰り返しのような処理が行われます。
04. まとめ
お疲れ様でした。
ここまで読んでいただきありがとうございました。
今回はPythonとC言語の関数の違いについて学習しました。
関数はプログラミングの基本の考え方なのでしっかりと押さえましょう。