Pythonのお勉強

社内で『みんなのPython』を使っての読書会を行いました。
今回の範囲は P.11 〜 P.67

参加者は8名で全員、Python初心者。気になった部分だけメモ。

書式

end文や{ } といったブロックの終わりを示す文がなくインデントで表現する。

if True:
    print "hoge"


ステートメントは行単位とは限らなくとも良いみたいで、途中に改行を挟む事もできる。

ary = ["a",
"b","c"
,"d"]

# ["a","b","c","d"]

rubyとは違い前行の文末に,(カンマ)が来なくても良い。
ちなみに実行環境はPython2.3系。

組み込みデータ型

  • タプル

要素の追加や変更、削除を行う事のできない固定長の配列のようなもの。
複数の変数に直接、値を代入する時などにも使える。

>>a,b,c = (1,2,3)

>>a
1
>>b
2
>>c
3
  • ディクショナリ

キーと値をペアにした要素を複数持つことのできるデータ型。
いわゆるハッシュ?

dic = {"key1": "value", "key2", 100}

キーには文字列、数値などあらゆるデータ型を使える。
 JavaScriptrubyのように未宣言の変数をキーに使えない。
 宣言済みの変数をキーにディクショナリを使うと変数にバインドされた値がキーとなる。

>>key = (1,2,3)
>>dic = {key: "value"}
{(1,2,3): "value"}


文字列と数値の足し算はエラー。以下のような式は書けない。
price = 1000 + "YEN"

  • 文字列

string型とunicode string型というものが存在する。
前者はAscii文字用の文字列。
後者はマルチバイト文字列を扱う事のできる文字列。
それぞれ以下のように表現する。

str = "hogehoge123"
unicode_str = u"ほげほげ" #リテラルの前にuをつける


ダブルクォーテーション×3でヒアドキュメント

>>str = """ここから開始
改行コードを含めた
文字列の宣言です"""

'ここから開始\n改行コードを含めた\n文字列の宣言です'
  • リスト

リストや文字列をシーケンス型と呼ぶ
シーケンス型は[n:m]を使って取得したい部分をスライスできる。

>>"abcdefg"[1:3]
bc
>>["a","b","c","d","e"][0:-2]
["a","b","c"]


リストのメソッドは破壊的なものが多い。戻り値がないところも要チェック。

>>ary = [1,2,3,4,5]
>>print ary.reverse() # 何も表示されない=戻り値がない
>>print ary
[5,4,3,2,1]
>>ary.append(10) # これも表示されない
>>print ary
>>ary.sort() # これも表示されない
>>print ary
[1,2,3,4,5,10]

演算

整数と整数の割り算は結果が丸められる。片方を少数にした場合は正しい値となる。

>>1 / 2
0
>>1.0 / 2
0.5


こんなところかな。

まとめ

  • pythonの実行は非常に手軽
  • 関数の使い方が出てこないとなんとも言えない
  • 未宣言の変数を使うとエラーなのは意外