pythonめも
Pythonをさわりはじめたのでメモ
特徴
- インデント
- 動的型付け
- コンテナ(配列/ハッシュ?):リスト/タプル/辞書(連想配列)/集合(hashset?)
- 全てオブジェクト:public & virtual
- 先頭アンスコでprivate
- 標準ライブラリ付属
繰り返し
for foo in [1, 2, 3]: print foo # 1, 2, 3
ブロックはインデントで表現
コメントアウト
- 行: #
- 複数行:
""" aaaa aaa '"""
複数行はインデントに気をつけないといけないらしい。
if
if foo == bar: # do something elif hoge == fuga: # do something else: # do something
論理演算子
- and
- or
- not
比較演算子
なんと複数条件可なので、直感的でよい。
1 < a < 5 # 1 < a and a < 5
the三項演算子的なのはない。残念。書くなら下記のように。 - in JavaScript
var x = (foo == bar) ? 10 : 20;
- in Python
x = 10 if foo == bar else 20
関数
def add(foo, bar) return foo + bar add(2, 3) # 5
return しないとNoneが返る。Noneはnullという認識で良いのかしら。
クラス
JSと違って、クラス定義もちゃんと用意されてる。
class testClass: def __init__(self): # コンストラクタ self.name = "" def getName(self): # getName()メソッド return self.name def setName(self, name): # setName()メソッド self.name = name foo = testClass() foo.setName("bar") print foo.getName() # bar
シングルクォーテーションとダブルクォーテーション
どっちでもいいみたい。
ただ、何個かサンプルをみたり、ドキュメントを見た感じだと、
シングルではなくダブルの公式っぽい。
JSではシングルを使うことが多いので、気をつけておく。
改めて調べてみたらGoogleはシングルクォーテーションのがcommonとしていた。
Python Strings | Google for Education | Google Developers
String literals can be enclosed by either double or single quotes, although single quotes are more commonly used.
こういうのはGoogleに従っておけば問題ないので、シングルを使う。
name == "main"
サンプルコードで時々でてきた、以下の記述が気になった。
def foo # do something if __name__ = "__main__": # do something
name変数というのは、pythonのインタプリタがコードを実行する前に定義する特別な変数のひとつ。読んでいるコードがメインのときはname変数に値"main"がセットされる。コードが他モジュールからインポートされている場合は、nameにそのモジュール名がセットされる。main関数を定義できると思えばよいか。
だいたい勝手がわかったので、がりがり書いてく。