オブジェクトのidについて【Python🐍】
こんにちは!
パソコンインストラクター歴12年目の
チサです。(*´∀`)
今日は
Python🐍の
オブジェクトのidについて
書こうと思います。
φ(..)メモメモ
昨日、
こんなnoteを書いたのですが…👇
オブジェクトには
後から変更できる ミュータブル
と
後から変更できない イミュータブル
がある。
という話です。
でもね。。
そもそも…
オブジェクトって
一体なに??
って思いません??
(´・ω・`)?
(わたしは思う💦)
ワードとかパワポだったら
オブジェクトって
▲とか●とか
図形を表す言葉だけど。。
なんと⁉️
Python🐍では
ほとんどすべてのものがオブジェクト
Σ( °ω° )ビクッ
らしいのです。
namae = "チサ"
(変数namaeに
文字列のチサを入れるという意味)
だったら…
namae っていう変数も オブジェクト
”チサ” という文字列も オブジェクト
らしい…
(º ロ º๑)
オブジェクトですよ‼️
という証拠❓は
後に .(ドット)を付けたら
いろいろメソッドが出てくること👇
(例)
でね…
すべてのオブジェクトは
・同一性(identity)
・型
・値
この3つをもっている!
とのことり
同一性っていうのは
他の誰もおなじのをもってない
idと同じ認識でOK。
たとえば
"チサ"っていう文字列の場合
・id
・型
・値
がどんなかんじなのか?
調べてみますね!
こんな感じで書いてみました👇
結果はコチラ👇
idは数字の羅列ですね。
チサ っていう文字は
メモリの2686076375216 に入っていますよ!
いう意味らしいです。
これまで
型や値については知っていましたが…
オブジェクトにidが存在する
ってことを知らなかったので
驚きでした🫢
Pythonでいろいろ物を作るとき
idを知っておくと
何かいいことがあるのかな?
。。。o(゚^ ゚)ウーン
idの扱いは
・ミュータブル(変更可能)…
リスト型 辞書型
・イミュータブル(変更不可)…
文字列型 数値型 タプル型
この2パターンで
扱いが変わるとのこと。
イミュータブルな場合
同じ値のオブジェクトの場合
idも一緒👇
ためしに
同じ値を別の変数に入れてみると…
『チサ』っていう文字は
文字列型だから…
変化できないイミュータブル‼️
だから
idも1個あれば十分!
みたいな感じなのかな?
(・・?
ではこんな場合は?
どうなる??
同じkazokuっていう文字列型の変数だけど
値が変わったら
idも変わるのかな??
結果はコチラ👇
イミュータブル(変化できない)な場合
値が変わればidも変わる‼️
୨୧・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・୨୧
でも!
ミュータブル(変化できる)の場合は
同じ値でも
その都度idが変わります👇
oyatu もoyatu1 も
リスト型でミュータブル(変化できる)
だから
同じidだとまずい!!
ってかんじで
oyatu も oyatu1 も
別のidを持たせるのかな??
( ˙꒳˙ )ホウ
じゃあ!
つぎの問題です!👇
チョコ🍫とアイス🍨とポテチ🍟
が入ったoyatuリストに
クッキー🍪を追加したら
idは変わるのでしょうか??
🤔
変わる??
変わらない??
どっち??
(*˙꒳ ˙* 三 *˙꒳ ˙*)
答えは!!!!!!
中の値が
変わったから…
リストのidも変化するのかな?
(・・?
って思ったけど違った💦
同じidでした。
どうやら。
ミュータブルの値が変わった時
そのつど
値のidを見に行っているようで
ミュータブルのidは固定されてる模様。。
ミュータブルが親
イミュータブルが子👶🏻
みたいな感じになるのかな?
親はオロオロしないで
でーーんと構えてる。。
みたいな??
🤔
とにかく。。
ミュータブルなオブジェクトidは
その要素が変化しても
オブジェクトのidはおなじ。
୨୧・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・୨୧
じゃあじゃあ!
ダメ押し最後の1問!
oyatuリストの0番目の"チョコ"
と
oyatu1リストの0番目の"チョコ"
idは一緒?違う??
さて?どっち!!
答えは
チョコは文字列型だから
イミュータブル(変化しない)
だからidも一緒!
いろいろ問題作って
idが変わるのか?わからないのか?
試してみるのもおもしろいですね♪
𐤔wʷ 🤣 𐤔w𐤔
ではでは
またあした!
(´꒳`)/
【Amazonで販売中のKindle📕】
➊パソコンに関する📕 2冊
https://amzn.to/3iGt2D8
➋Kindle出版に関する📕 2冊
➌節約に関する📕 1冊
➍読書に関する📕 1冊
➎海外の方向けの📕 3冊
気になる本があれば
試し読みだけでも♪
(´▽`)