概要
「Head First Python 第2版」を進めていった中で考えたことの記録です。
Head First Python 第2版 ―頭とからだで覚えるPythonの基本
- 作者:Paul Barry
- 発売日: 2018/03/24
- メディア: 単行本(ソフトカバー)
Pythonのrangeについて
- 連番や等差数列を表すオブジェクト
- 日本語では「範囲」と言われる
- 1引数の
range(stop)
関数が生成するものrange
型のオブジェクト- 開始値は0
- 終了値は
stop
未満の最大の整数 - 連番間の差分は1
dunderとは
- double underscoreの略
- 一部の特殊キーワードを識別するために用いられる記号
__
を指す - もしくは、
__
で囲まれた名前の接頭辞として用いる__main__
…dunder main__name__
…dunder name__init__
…dunder init- その他多数
コンテナとイテレータ
- コンテナ(container)…反復処理の対象となるオブジェクト
- イテラブル(iterable)…イテレータを使った処理の対象とすることが可能なオブジェクト種別
- Pythonにおいては、範囲・タプル・リスト・文字列等がイテラブルである
- イテレータ(iterator)…コンテナに対する反復処理において、現在処理対象となっているオブジェクトを返すオブジェクト
- Pythonの
for
文は、for <iterator> in <container>:
というのが基本構文となる- Rubyだと、
<container>.each { |<iterator>| ... }
または<container>.each do |<iterator>| ... end
- Rubyだと、
Pythonでは「すべてがオブジェクト」である
- 整数、文字列、関数、テンプレート…すべてはオブジェクトである
- Javaにおける「プリミティブ型」に相当する概念は存在しない
- すべての基底クラスたる
Object
が存在する- 整数、文字列、関数、テンプレート…すべては
Object
を継承している
- 整数、文字列、関数、テンプレート…すべては
- 関数も(第一級)オブジェクトである
シーケンス型の特徴
- リスト…動的、可変
- タプル…不変
- 辞書…順序なし、キーと値の組、可変
- 集合…重複なし、順序なし、可変
リストには組み込みメソッドが含まれる
- リストそのものもオブジェクトなので、組み込みメソッドが含まれることに何ら不思議はない
- 以下はリストの組み込みメソッドの例
append(x)
extend(iterable)
insert(i, x)
remove(x)
pop([i])
リストからオブジェクトを取り除くための関数あれこれ
remove(x)
- リスト中の、
x
という値を持つ最初の要素を取り除く - 該当する要素がなければ、例外
ValueError
をスローする - 戻り値は
None
である
- リスト中の、
pop([i])
- リスト中の指定した位置にある要素を取り除く
- 該当する要素がなければ、例外
ValueError
をスローする - 戻り値は取り除いた要素である
- 引数
i
は省略可能- 引数なしの
pop()
は、リスト末尾の要素を取り除く
- 引数なしの