Python チュートリアル
情報
Python チュートリアル
このチュートリアルは網羅的なものではないが、特筆すべき機能を紹介し、言語の持ち味やスタイルについて好印象を持ってもらう。
1. やる気を高めよう
Pythonという言語
たくさんのエラーチェックを提供しながら簡単に利用できる超高級言語である。
インタプリタ言語である。
コンパクトで読みやすい。
拡張できる。
2. Python インタプリタを使う
2.1. インタプリタを起動する
インタプリタのオプション
python -c command [arg] ...でcommandに指定した文を実行。
python -m module [arg] ...でmoduleのソースファイルを実行。
-iをスクリプトの前に追加するとスクリプトを走らせて、そのまま対話モードに入る。
2.1.2 対話モード
対話モードの種類
一次プロンプト (primary prompt) (>>>)
二次プロンプト (secondary prompt) (...)
一つの入力が次の行まで続く場合。
3. 形式ばらない Python の紹介
3.1. Python を電卓として使う
3.1.1. 数
累乗を計算するのに**演算子が使える。
対話モードでは、最後に表示された結果は変数_に代入される。
3.1.2 文字列型 (string)
引用符の前にrを付けると\をつけた文字を特殊文字として解釈させないraw stringsが使える。
code:python
>> print('C:\some\name') # here \n means newline!
C:\some
ame
>> print(r'C:\some\name') # note the r before the quote
C:\some\name
連続して並んでいる複数の 文字列リテラル は自動的に連結される。
code:python
>> 'Py' 'thon'
'Python'
この機能は長い文字列を改行したいとき役立つ。
code:python
>> text = ('Put several strings within parentheses '
... 'to have them joined together.')
>> text
'Put several strings within parentheses to have them joined together.'
スライスで範囲外のインデクスを使ったときは上手く対応してくれる。
code:python
>> word = 'Python'
'on'
''
Pythonの文字列は不変である。
3.1.3. リスト型 (list)
スライスに代入可能。サイズを変更したり、消したりできる。
code:python
>> letters
>> # replace some values
>> letters
>> # now remove them
>> letters
>> # clear the list by replacing all the elements with an empty list
>> letters
[]
3.2. プログラミングへの第一歩
値の真偽
ゼロでない整数値は真、ゼロは偽。
1つ以上の長さのシーケンスは真で、空のシーケンスは偽。
4. その他の制御フローツール
4.2 for 文
ループ内部でいてレートしているシーケンスを修正するときはスライス記法を使う:
code:python
>> for w in words:: # Loop over a slice copy of the entire list. ... if len(w) > 6:
... words.insert(0, w)
...
>> words
for w in words:を使った場合、無限に挿入しようとしてしまう。
ループ分のelse節はbreakされなかった場合に実行される。
4.6. 関数を定義する
return文を持たない関数はNoneを返す。
4.7 関数定義についてもう少し
4.7.1. デフォルトの引数値
デフォルト値は、関数が定義された時点で、関数を 定義している 側のスコープで評価されるので
code:python
i = 5
def f(arg=i):
print(arg)
i = 6
f()
は 5 を出力する。
デフォルト値は1度だけしか評価されないため変更可能オブジェクトの場合注意が必要:
code:python
def f(a, L=[]):
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
このコードは以下を出力する:
code:python
後続の関数呼び出しでデフォルト値を共有したくなければ、以下のように書ける:
code:python
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L
4.7.2. キーワード引数
*nameでタプルを、**nameで辞書を受け取ることができる。
4.7.4. 引数リストのアンパック
リストやタプルを個別な固定引数を要求する関数呼び出しに渡す際は*演算子で引数をアンパックする:
code:python
>> list(range(*args)) # call with arguments unpacked from a list
辞書でも**演算子でキーワード引数を渡せる:
code:python
>> def parrot(voltage, state='a stiff', action='voom'):
... print("-- This parrot wouldn't", action, end=' ')
... print("if you put", voltage, "volts through it.", end=' ')
... print("E's", state, "!")
...
>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
>> parrot(**d)
-- This parrot wouldn't VOOM if you put four million volts through it. E's bleedin' demised !
4.7.6. ドキュメンテーション文字列
/icons/わからん.iconインデントに関する規約についての記述がよく解らなかった。コード例もなぜNo, ...の前にインデントがあるのかわからん。
5. データ構造
5.1. リスト型についてもう少し
原則的に、Pythonの変更可能なデータ構造全てにおいて、insert、remove、sortなどの操作メソッドはNoneを返す。
8. エラーと例外
8.6. クリーンアップ動作を定義する
finally 節 (finally clause) は、例外が発生したかどうかに関わらず、try 文を抜ける前に常に実行される。