today::エンジニアに憧れる非エンジニア

今のところは、エンジニアとは言えないところの職種です。しかしエンジニア的なものの考え方に興味津津。

Pythonあれこれ 2021-01-19

概要

「Head First Python 第2版」を進めていった中で考えたことの記録です。

Head First Python 第2版 ―頭とからだで覚えるPythonの基本

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
    • その他多数

mail.python.org

コンテナとイテレータ

  • コンテナ(container)…反復処理の対象となるオブジェクト
  • イテラブル(iterable)…イテレータを使った処理の対象とすることが可能なオブジェクト種別
    • Pythonにおいては、範囲・タプル・リスト・文字列等がイテラブルである
  • イテレータ(iterator)…コンテナに対する反復処理において、現在処理対象となっているオブジェクトを返すオブジェクト
  • Pythonfor文は、for <iterator> in <container>:というのが基本構文となる
    • Rubyだと、<container>.each { |<iterator>| ... }または<container>.each do |<iterator>| ... end

www.atmarkit.co.jp

Pythonでは「すべてがオブジェクト」である

  • 整数、文字列、関数、テンプレート…すべてはオブジェクトである
  • Javaにおける「プリミティブ型」に相当する概念は存在しない
  • すべての基底クラスたるObjectが存在する
    • 整数、文字列、関数、テンプレート…すべてはObjectを継承している
  • 関数も(第一級)オブジェクトである

developer.mozilla.org

シーケンス型の特徴

  • リスト…動的、可変
  • タプル…不変
  • 辞書…順序なし、キーと値の組、可変
  • 集合…重複なし、順序なし、可変

リストには組み込みメソッドが含まれる

  • リストそのものもオブジェクトなので、組み込みメソッドが含まれることに何ら不思議はない
  • 以下はリストの組み込みメソッドの例
    • append(x)
    • extend(iterable)
    • insert(i, x)
    • remove(x)
    • pop([i])

docs.python.org

リストからオブジェクトを取り除くための関数あれこれ

  • remove(x)
    • リスト中の、xという値を持つ最初の要素を取り除く
    • 該当する要素がなければ、例外ValueErrorをスローする
    • 戻り値はNoneである
  • pop([i])
    • リスト中の指定した位置にある要素を取り除く
    • 該当する要素がなければ、例外ValueErrorをスローする
    • 戻り値は取り除いた要素である
    • 引数iは省略可能
      • 引数なしのpop()は、リスト末尾の要素を取り除く