どうも、筋トレ臨床工学エンジニアkenです。
Qiitaで初めての投稿です。
僕は普段はC#を使って医療システムの開発業務を行っています。
機械学習の方にも力を入れていこうと思い、pythonの学習を始めました。
学習といってもProgateのpythonコースを一回りやったほどですが、C#と記述の仕方など異なるところについて簡単にまとめます。
C#、C++、VBあたりを普段使っていて、これからpythonを学習したいという人は、この両者の違いを予め知っておくと学習が捗るかと思います。
コードから見るC#とpythonの簡単な違い
文の終わりのセミコロンいらない
Console.WriteLine("Hello C#"); //ステートメントの末尾には必ずセミコロン
print("Hello python")
ステートメントの末尾のセミコロンがpythonの場合は不要です。
普段C#のようなセミコロンが必要な言語を使っているとまずここが慣れませんでした。
変数は型指定不要
string[] animals = {"dog","cat"}; //変数は全て型を指定
animals = ["dog","cat"]
pythonは「動的型付け言語」であり、変数宣言時にデータ型を指定する必要がありません。
C#のような静的型付け言語でもvarキーワードを使うことで実際に入るデータの型を推論してくれる(型推論)ことができますが、コードを読む際にデータ型が明示されてないのは少し難しく感じます。
コードを書く際は楽そうだなという感じもします。
ちなみにpythonは関数の戻り値、引数にも型指定しません。
中かっこが不要、インデントの有無がコードに影響する
foreach(string animal in animals)
{
Console.WriteLine(animal);
}
for animal in animals:
print(animal)
コードの中では配列の中身を出力する処理
(C#ではforeach,pythonではforの部分)を見てもらうとわかると思うのですが、
pythonは条件式後の処理を:(コロン)とインデントで区別しています。
if文などの場合も同様です。
インデントの有無が動作に影響するのも面白いですね。
これだと誰が書いても見やすいように書けます。
リストの要素は型を問わず入れられる
string[] animals = {"dog","cat"}; //変数は全て型を指定
animals = ["dog","cat",1,2]
リストとはC#でいう配列のことです。
一つのリストの要素に文字列、数値型などなんでも混ぜて入れられるのも、C#にはない特徴です。
C#にもArrayListというコレクションがあり、そちらは要素の型を問わず入れることができます。ただし、取り出す際はキャスト(型変換)が必要です。
ちなみにpythonでは配列の中身を取り出す処理をforと記述します。
C#のfor文とは処理が異なります。
この辺がややこしいかもしれません。
まとめ
以上、pythonの学習を初めて感じた他言語(C#)との違いを簡単にまとめました。
ここまでのコードの違いをまとめて比べると以下のようになります。
出力は同じになります。
using System; //名前空間の指定
namespace test //名前空間の宣言
{
public class Hello //クラスの宣言
{
public static void Main() //メソッド
{
Console.WriteLine("Hello C#"); //ステートメントの末尾には必ずセミコロン
string[] animals = {"dog","cat"}; //変数は全て型を指定
foreach(string animal in animals)
{
Console.WriteLine(animal);
}
}
}
}
Hello C#
dog
cat
pythonの場合
print("Hello python")
animals = ["dog","cat"]
for animal in animals:
print(animal)
Hello python
dog
cat
コードを見てわかるように、C#は変数の型指定など、細かく記述するためコードが長くなりがちです。
反面、pythonは非常にすっきりしています。
pythonのみならず、動的型付け言語は記述もシンプルに書けるので、高速で開発するのに向いているのかなと感じました。
今後はpythonを用いた簡単なデータ分析などにも取り組んでいこうと思います。
読んでいただきありがとうございました。
個人のブログもやっておりますので、良ければそちらもよろしくお願いします。