内部実装を読んで理解する『len()関数がオブジェクトの長さを手にいれる仕組み』 #pyconjp #pyconjp_203
len()関数がオブジェクトの長さを手にいれる仕組み
Takayuki Shimizukawa @shimizukawa
Pythonには文字列やリストなど、長さをもつオブジェクトがあります。長さを手に入れるには、文字列なら、name.length ではなく len(name) のようにlen関数を使います。len関数はどうやってnameに入っているオブジェクトの長さを手に入れているのでしょうか。if文にはTrue/Falseとなる条件式を指定しますが、それだけでなく文字や数字、自分で作ったデータ型も渡せます。if文はどうやって与えられたオブジェクトがTrueなのかFalseなのかを手に入れているのでしょうか。 この発表では、Pythonのプログラムがどうやって必要な情報を手に入れているのか、また、自分で実装するときにどう実装すればlen()やif文やfor文に指定できるのかを説明します。
かべ
@kabefloor
forってlistとかはそのまま処理してるイメージだったけどiteratorにしてたんだ。ほえぇ #Pyconjp #pyconjp_203
2017-09-08 14:25:49
ytakashina
@takashinayuya
インターフェースを継承して実装するのと __len__() とかを勝手に実装してアダプターで呼ぶのはどう違うんだろう #pyconjp #pyconjp_203
2017-09-08 14:26:49
麻木浅葱 / ARメタバース
@asagi_00a3af
#pyconjp #pyconjp_203 なるほどなー。 経緯と歴史。議論がされていないわけがないので、頭ごなしに「おかしい」というのではなく、その実装になっている意図を読もう、と。
2017-09-08 14:30:54
くーむ@( o・ω・)ノ
@cocodrips
Pythonのデザインに関してのFAQがいろいろ!! "デザインと歴史 FAQ — Python 3.6.2 ドキュメント - docs.python.org/ja/3/faq/desig…" #pyconjp_203
2017-09-08 14:33:58
くーむ@( o・ω・)ノ
@cocodrips
めっっちゃおもしろかったしし、わかりやすかった!!! 気になってた所がさっぱりしたし自分でもっとPythonの実装見ていきたい(∩´∀`)∩ #pyconjp_203
2017-09-08 14:36:03
麻木浅葱 / ARメタバース
@asagi_00a3af
#pyconjp #pyconjp_203 一つの効果として独自実装的に.size(), .len(), .length()の混合を避けられるというものがあるらしい
2017-09-08 14:36:23