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)。