shindos.Lab

プログラミング/音楽/書道をやってます。 いろいろ考えたり実験したことを書きます。たぶん。

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; 
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関数を定義できると思えばよいか。

だいたい勝手がわかったので、がりがり書いてく。