Python 3.1.1 メモ

end キーワードで改行の代わりに指定した文字を行末に入れる

http://docs.python.org/3.1/tutorial/controlflow.html#arbitrary-argument-lists

print(b, end=' ')

listをforに使うときはコピーで

http://docs.python.org/3.1/tutorial/controlflow.html#for-statements

>>> for x in a[:]: # make a slice copy of the entire list
...    if len(x) > 6: a.insert(0, x)

passは何もしない

http://docs.python.org/3.1/tutorial/controlflow.html#pass-statements

>>> def initlog(*args):
...     pass   # Remember to implement this!

メソッドの引数のデフォルト値

http://docs.python.org/3.1/tutorial/controlflow.html#default-argument-values

def ask_ok(prompt, retries=4, complaint='Yes or no, please!'):

この場合は、

ask_ok("Quit?")
ask_ok("Quit?", 2)
ask_ok("Quit?", 2, "Please enter Yes or No")

のように引数を渡せる。

引数に値を渡す

http://docs.python.org/3.1/tutorial/controlflow.html#keyword-arguments

def parrot(voltage, state='a stiff', action='voom', type='Norwegian Blue'):

この関数は、

parrot(action='jump', voltage=10)

の様な引数で呼び出し可

可変の引数(tuple)

http://docs.python.org/3.1/tutorial/controlflow.html#arbitrary-argument-lists

def print_items(label, *items, sep=", "):
    print(label + ": " + sep.join(items))

print_items("fruits", "apple", "orange", "grape")
# fruits: apple, orange, grape

lambdaで匿名ファンクション

http://docs.python.org/3.1/tutorial/controlflow.html#lambda-forms

>>> def make_incrementor(n):
...     return lambda x: x + n
...
>>> f = make_incrementor(42)
>>> f(0)
42
>>> f(1)
43

ドキュメンテーション文字列

http://docs.python.org/3.1/tutorial/controlflow.html#documentation-strings

  • 一行目は簡潔に。関数の名前をわざわざ書く必要はない。大文字から始めてピリオドで終わる。
  • 二行目は空行
  • 三行目以降に詳細
  • print(my_function.__doc__)でも見れる
>>> def my_function():
...     """Do nothing, but document it.
...
...     No, really, it doesn't do anything.
...     """
...     pass
...
>>> print(my_function.__doc__)
Do nothing, but document it.

    No, really, it doesn't do anything.

コーディングスタイル

http://docs.python.org/3.1/tutorial/controlflow.html#intermezzo-coding-style

  • インデントはスペース4コで。タブは避ける。
  • 一行は79文字を越えないようにする
  • 空行でクラスやファンクション、コードのブロックを分ける。
  • 可能ならコメントはコメント対象のコードの行内に書く
  • docstringを使う
  • 演算子とコンマの後にスペースを入れる
  • クラスの名前は大文字から始め(CamelCase)、関数の名前は小文字から始める(lower_case_with_underscores)。