現役C言語開発者が語る:C言語とPythonの違いと比較

Python
この記事は約4分で読めます。
スポンサーリンク

私は、C言語を使用している現役組み込みシステムのエンジニアです。
エンジニア歴は、10年以上です。
最近Pythonを書くようになり、C言語との違いで「うーん」慣れへんなぁとなったところをまとめてみようと思います。
慣れないことでPython使うのやーめよってなる方もいるかと思いますので、ぜひ参考にしてください。

main関数

まず、pythonではメインとなる関数なしに作成していけます。
C言語でいうmain関数ですね。
これは基本的にPythonはスクリプト言語になるので、上の行から順に実行していくことが基本形となる言語のためこういった形になります。
これは、解決方法があるので、以下をファイルの一番したに記載すれば解決できます。

if __name __  == ' __ main __ ':

実際のコードでの使用方法は以下のような形になります。

def func():
	print("test")

if __name__ == '__main__':
	func()

これを実行すると、以下のようになります。
※ちなみに、Dドライブ等にファイルを格納して実行したい場合に、コマンドプロンプトでDドライブにいきたくなる時があると思いますが、そんなときは、「D:」と入力してもらえれば移動できます。

if name == ‘main‘: の下に記載しているfunc関数が呼び出されて、func関数内の print(“test”) 実行されていますよね。
はい。これで、main関数については解決ですね。
これは覚えておいた方が、今後プログラミングをする上で役にたつと思います。

関数の定義方法

続いて、関数の定義です。
C言語では、戻り値と引数を設定して、使用するためには場合に応じてプロトタイプ宣言が必要になりますが、Pythonでは、プロトタイプ宣言と戻り値の指定は不要です。

C言語 の場合

int get_data(int x,int y);   <-プロトタイプ宣言

void main(void)
{
    int data;
    data = get_data(10,20);
}

int get_data(int x,int y)
{
    int ret;
    ret = x + y;

    return ret;
}

Pythonの場合

def get_data(x , y):
	data = x + y
	return data

if __name__ == '__main__':
	data = get_data(10, 20)
	print(data)

実行結果は以下

ちゃんと、実行できていますよね。
C言語では、戻り値や引数に型定義を入れる必要がありますが、Pythonは自動で認識してくるので、 型 を入れる必要がありません。
ただ、これくらいのプログラムではいいですが、ライブラリ等いろいろ呼ぶような複雑なプログラムを書いてくると、今使用している方が何かわからなくなり、 型 が違う!ってプログラムが強制終了したりします。
これは、以下のように記載すると今使用している方が何なのかわかるので、覚えておくと後々役にたつと思います。

print(type(data))

※dataは変数を指定します

実行結果は、以下のようになります。

<class 'int'>

これで、int型の変数であることがわかります。
あと関数を書く上で、馴染みがないのは、関数の終わりですね。
C言語では、関数のはじめと終わりは 「{}」で囲うので、わかりやすいですが、Pythonでは、「:」で関数宣言の終わりを指します。
これは、関数だけでなく、if 文 やfor文などの終わりにも記載します。
つまり、Pythonでは、プログラムの階層が変わるときに、「:」を識別子として使用しているわけです。
じゃあ、階層が変わった後のプログラムはどういう風に実行する?と思うかもしれませんが、Pythonでは、インデントの違いにより階層が違うことを判断し実行していきます。

def get_data(x , y):
	ret = "no"
	data = x + y
	if data >= 10:
		ret = "yes"
	else:
		pass
	return ret

if __name__ == '__main__':
	result = get_data(10, 20)
	print(result)

上に、if分を用いた簡単なプログラムを記載しました。
見ていただければわかると思いますが、「:」で必ず、タブで階層が違うようになっていますよね。
また、Pythonでは処理を実行しない場合はC言語のように何も記載しないと、エラーとなってしまいます。
こういった場合は、上記の7行目のように「pass」と記載します。これは処理をしませんよっていう意思表示です。
はい。これで、関数も作成できるようになりましたね。

まだif文 for文と続きますが、長くなってきたので次ページに記載します。

コメント

タイトルとURLをコピーしました