ナカナカピエロ おきらくごくらく

写真付きで日記や趣味を書くならgooブログ

職業訓練Python基礎演習七日目(id関数の不思議)

2019-10-15 20:42:27 | 日記
職業訓練Python基礎演習七日目(id関数の不思議)
 
今日は火曜日。雨のち曇り。
 
1時半頃起きて、メイン講師の講義資料レビューを30分ほどして再び寝た。
 
5時起床。
 
6時過ぎに家を出て会社。
 
朝食は会社近くのカフェでモーニング。
 
9時~15時半まで職業訓練Python基礎演習七日目。
 
台風19号明けだったけど、受講生は皆出席。
 
午前中は先週の復習。
 
午後は複合データ型であるリストに加え、タプル、集合を講義した。辞書は明日。
 
で、Meは内職をしていて、以下のid関数が何故同じ値を返せるのか調べていた。
--------
s="abca"
print(id(s[0]))
print(id(s[len(s)-1]))
--------
 
文字列なら連続領域で取らないと性能的に落ちると思うのだが、最初の'a'も末尾の'a'も
 
同じidを返している。
 
でソースコード(builtin_id関数)を見るとPyObjectへのアドレスを単に返しているだけだ。
 
 
それを見ると第2引数のPyObjectは、id(s[0])とid(s[len(s)-1])で同じPyObjectへのアドレスを
 
返していることになる。
 
これだと文字列型の比較など一連の操作の性能が著しく悪くなるはずなんだが、本当にPythonは
 
文字列を個々の文字オブジェクトへの参照のリストとして実装されているんだろうか。。。。
 
一応、id関数の仕様は下記になっている。
------
Return the “identity” of an object.
This is an integer which is guaranteed to be unique and constant for this object during its lifetime.
Two objects with non-overlapping lifetimes may have the same id() value.
CPython implementation detail: This is the address of the object in memory.
------
 
謎だ。。。ということで、未解決事件になった。誰か分かる人がいたら教えてほしい。
 
後の残りは内職で「ベイズ統計モデリングによるデータ分析入門」を読書し、R言語を触っていた。
 
大分、R言語に慣れてきた。
 
そして無事、講義は終わった。
 
定時までメイン講師と教育関係の取締役とでimmutableとhashableの違いについて議論。
 
疲労困憊。定時退勤。
 
お風呂入ったので、21時~フジテレビにてドラマ「まだ結婚できない男」(第2話)を観た。
 
まあまあだったな。寝る。
 
明日は職業訓練Python基礎演習八日目。頑張る。
 
【やることリストのタスク】
・神奈川県職業訓練Python養成科 SQL講義準備(講義日程:11月26日~28日)
・Python講座カリキュラム体系の再検討と講義資料の作成
 
わかりやすいパターン認識   石井 健一郎
工学系の関数解析   小川 英光(P.212/283読了)
みんなのR 第2版   Jared P. Lander(P.82/575読了)
エントロピーの正体   アリー・ベン=ナイム(P.56/184読了)
逆数学:定理から公理を「証明」する   ジョン・スティルウェル(P.27/205読了)
 
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする