Help us understand the problem. What is going on with this article?

C系プログラマが始めるPython

Pythonを勉強することになったきっかけ

前々から話題になっており触りたいと思っていたまま、時が過ぎてました...
つい最近、Python触れる子が周りにいたり、企業の人にも他の言語にも触れてみたらとアドバイスをもらったりしたので勉強するモチベが高くなったって感じです。

余談

この画像はちょまどさんが描かれたものです。Pythonちゃん可愛いですよね!
pythonChan

この記事を読む前に

投稿主はC/C++JavaC#をすでに触っているため、そういったC系の言語と比較した視点で記事を書いていくので予めご了承ください。

お〇ぱいそんを触りたい

ド下ネタな見出しですみません。ただ言いたいだけです。
ここから具体的なPythonの基本文法についてまとめてます。参考記事の内容を自分なりに省略しているので詳細は参考記事をご覧ください。

セミコロンが要らない

タイトルの通り過ぎてこれ以上書くことがないですが、文末にセミコロン付けなくていいらしいので1タイプ手間が減りますね!!
個人的には普段C系の言語を触っているので違和感しか感じませんが笑

型の指定が要らない

C/C++などでは変数を宣言する際に型を明示しなければなりません。

C++
int num = 100;

これがPythonだとこうなります。

Python
num = 100

C++やC#でいうautoやvar(型推論)的なことをPythonはデフォルトでやってるみたいですね。(動的型付け)
ただ、明示した方が良いこともあるので一長一短ですね。
ちなみに関数の引数や戻り値も同様に型指定がありません。

中括弧が要らない(ifやforに括弧が要らない)

ないないだらけですね笑

Python
num = 77
if num % 2 == 0:
  print("偶数です")
else:
  print("奇数です")

中括弧がない代わりに:(コロン)で条件と処理を分けてるみたいですね。インデントをすることで階層を判断するみたいです
またifやfor、whileなどの条件に括弧をつけないそうです。
これなら中括弧の位置で戦争することが無いので平和だぁ...

switch~case、do~whileが無い

タイトルの通りありません。do~whileについてはほぼ使わないんですけどね。
switchの代わりにif~elif~elseで代用するみたいです。else ifではなくてelifみたいなので注意。(なぜ省略したんだろ...)

リストに型の制約がない

Cでいう配列なのですが、配列と違いPythonのリストは型の制約がないので数値型や文字列が混在していても大丈夫なようです。

Pythonのforは拡張for(C#でいうforeach)

Python
arrayList = ["cat",100,25.25,"Python"]

#リスト内をぶん回します
for array in arrayList:
   print(array)

#indexで指定してforを回したい場合
for index in range(0,10):
  print(index)

上のコードのコメントの通りです。rangeを使うことで0から9の配列を用意しています。
ちなみにコメントは// の代わりが # で /*~*/ の代わりが ''' ~ '''です。

演算子系

  • インクリメント・デクリメント演算子が存在しない(+=や-=では使える)
  • //(小数点以下を切り捨て、整数値を低い方に合わせる)や**(べき乗)がある
  • 論理演算の&& や || 、! が and、 or、 notという予約語として扱われる。

関数

Pythonの関数は関数オブジェクトとして扱われています。

Python
def Add(x,y):
  return x + y

前述したとおり型指定が要らないのでこういう風に描けます。手前にdefを付けたら関数です。物凄くシンプルで好き。
しかもこれの凄いところが型指定が無いのでこんなこともできます。

Python
print(Add(2,5))
print(Add(1.6,4.8))
print(Add("Hello","World"))

C++やC#でいうテンプレート関数として扱えます。(<>で型指定しないのが便利すぎる)
ただ関数のオーバーロードが出来ないそうです。似たようなことをしようと思ったらデフォルト引数を用いればできるみたい。

pass文

pass文っていう処理書かなくてエラー出ずに通るっていう文があります。

Python
def AddPosition():
  #TODO:後で実装
  pass

こんな感じで後で実装したいときとかにpass文を使うそうです。なるほどーって感じです。

その他

  • import が Cでいう #include
  • 連想配列(dict)、タプルが標準で使える
  • const や readonly、finalなどの定数のキーワードが無い。(慣習で大文字の変数は定数と扱っているみたい)
  • public や private などのアクセス指定子がない。(慣習でprivateなものには _を 1つ付けるとかなんとか)
  • virtualやoverrideがない。(継承して同名のメソッドを定義すれば可能)
  • 多重継承が可能。(その代わりjavaでいうインターフェースがない)

まとめ

ぱーっと基本的な文法についてはこんなものかなと思います。C++やC#でもあるような機能は省いています。詳細は参考記事をご覧ください。
軽く勉強してみて感じたのは可読性の高いコードを書きやすいなと思いました。
今後はPythonを用いて自動化やAIについての勉強もできたらなと思います。

またPythonについてご意見やアドバイスがありましたら気軽にコメントくださると嬉しいです!

参考記事

C言語系プログラマのためのPython入門
https://qiita.com/shiracamus/items/fd35c685e9679323471f

C#エンジニアが初めてpythonを学習して感じた違い
https://qiita.com/CEML/items/29944cbeb8e38171a630

C#からPythonに乗りかえるための両者の比較
https://qiita.com/kent-u/items/e6b210d38ca39b4cd107

C#erがPythonを勉強したので、違いについて比較しながら述べてみる その1 構文
https://hiroronn.hatenablog.jp/entry/20170717/1500281854

Python入門
https://python.keicode.com/

Ajitsuke_Nori
とある専門学校で勉強中のプログラマです。アウトプットするためにQiita始めました!!
https://twitter.com/nori_0524_kd
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away