内部実装を読んで理解する『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文に指定できるのかを説明します。
5
うさたーん @usaturn

「bool()関数」と言うだけで笑いをとれる shimizukawa センセー #pyconjp #pyconjp_203

2017-09-08 14:18:14
Takumi Sueda @puhitaku

清水川さんの聞こうと思ったら立ち見だった #pyconjp

2017-09-08 14:19:00
replu @replu5

スライドの図めっちゃわかりやすい #pyconjp #pyconjp_203

2017-09-08 14:19:20
susumuis/いしがみプロ @susumuis

bool関数ではなくAdapter __bool__()または__len__()がFalseまたは0を返す時:偽、それ以外:真 #pyconjp_203

2017-09-08 14:19:22
麻木浅葱 / ARメタバース @asagi_00a3af

#pyconjp #pyconjp_203 「偽とみなされないもの→偽じゃないやつ」www

2017-09-08 14:19:25
Λlisue @lambdalisue

Protocol は Python 3.7 で typing に導入されるんじゃなかったけか(今言ってるものとは別)。だから今までの Protocol ってのが指すものと今後指すものは変わると思う #pyconjp_203

2017-09-08 14:19:41
くーむ@( o・ω・)ノ @cocodrips

bool()は__bool__がない場合はbool(len(obj))相当の処理を行う #pyconjp_203

2017-09-08 14:19:43
さわでぃさん🍅🦒🗼🐴💻⚓ @sawadyrr5

bool()はまずobjが__bool__を実装しているか調べて、してなかったら__len__を調べるから、空リストはFalseなんだな #pyconjp_203

2017-09-08 14:20:36
ミヒャエル@療養中 @mihyaeru21

boolがlenも使ってるのまじかーって感じ #pyconjp_203

2017-09-08 14:20:43
麻木浅葱 / ARメタバース @asagi_00a3af

#pyconjp #pyconjp_203 「初級から中級にするわけには行かないのでこの話の難易度は初級++++」

2017-09-08 14:21:13
くーむ@( o・ω・)ノ @cocodrips

boolの実装 "cpython/typeobject.c at master · python/cpython - github.com/python/cpython…" #pyconjp_203

2017-09-08 14:21:14
Λlisue @lambdalisue

中級に上げるわけに行かないから + が増えるw #pyconjp_203

2017-09-08 14:21:17
SHIMIZU Taku @takuan_osho

lv表記を上げるわけにはいかなかったから+の方を増やして「初級++++」とやっているのには笑う #pyconjp #pyconjp_203

2017-09-08 14:21:28
擬音 @gion_pop

イテラ って読んでしまう > iter() #pyconjp_203

2017-09-08 14:21:44
住人 @i0nin

「よし。詳解Pythonを読もう」って思いました #pyconjp #pyconjp_203

2017-09-08 14:21:52
さわでぃさん🍅🦒🗼🐴💻⚓ @sawadyrr5

イテレータプロトコルという用語は聞いたことあったけど、深く理解はしていなかった #pyconjp_203

2017-09-08 14:21:53
さわでぃさん🍅🦒🗼🐴💻⚓ @sawadyrr5

大昔にExcelVBAでイテレータパターン実装したときのこと思い出した #pyconjp_203

2017-09-08 14:23:34
tomo🐧@learning @cocoatomo

#pyconjp_203 確かに意識したこと無かったけど, プロトコル一覧ってドキュメントに無いのな.

2017-09-08 14:24:29