Oh 脳《144》続々・ようこそ Python のトワイライトゾーンへ《問題篇》
‖記事一覧‖Oh 脳: after ZERO《其之佰肆拾肆》
続々・ようこそ Python のトワイライトゾーンへ… (@,@)《問題篇》
《監修》小泉ひよ子とタマゴ倶楽部
♪セミナーの枕で紹介した小ネタ集です。息抜きや話題作りにどうぞ (^.^)
Python には、知る人ぞ知る、さまざまなトワイライトゾーンが存在します。
- 今回は、続々編として(Python1.5 で作成した資料を)Python3.1 で再構成したものを紹介します。
過去に作成したセミナー資料を整理していると、次のようなものが出てきました。
■ 問題篇(1)長さが1の文字列
>>> ================================ RESTART ================================ >>> s1 = "A" >>> s2 = "A" >>> s3 = chr(65) >>> s = s1,s2,s3 >>> for e in s: e, hex(id(e)) ('A', '0xe7d60') ('A', '0xe7d60') ('A', '0xf7aa0')変数 s1,s2,s3 によって束縛される文字列オブジェクトについて、
- どれも同じリテラル表現 'A' を持ちますが、
- すべてが同じ文字列オブジェクトとは限りません。
>>> # -------------------- begin >>> ??? >>> # -------------------- end >>> s = s4,s5,s6 >>> for e in s: e, hex(id(e)) ('A', '0xf7aa0') ('A', '0x630ee0') ('A', '0x124d260')変数 s4,s5,s6 によって束縛される文字列オブジェクトについて、
- どれも同じリテラル表現 'A' を持ちますが、
- すべて異なる文字列オブジェクトです。
これらの文字列オブジェクトを生成するために、??? で何を実行したか、その可能性を模索してください。□
■ 問題篇(2)長さが2以上の文字列
>>> ================================ RESTART ================================ >>> s1 = "AB" >>> s2 = "AB" >>> s3 = "A"+"B" >>> s = s1,s2,s3; s ('AB', 'AB', 'AB') >>> for e in s: e,hex(id(e)) ('AB', '0x613560') ('AB', '0x613560') ('AB', '0x613560')変数 s1,s2,s3 によって束縛される文字列オブジェクトについて、
- どれも同じリテラル表現 'AB' を持つだけでなく、
- すべて同じ文字列オブジェクトです。
>>> # -------------------- begin >>> ??? >>> # -------------------- end >>> s = s4,s5,s6,s7,s8; s ('AB', 'AB', 'AB', 'AB', 'AB') >>> for e in s: e,hex(id(e)) ('AB', '0x122d080') ('AB', '0x115bf40') ('AB', '0x1254140') ('AB', '0x1254200') ('AB', '0x12542c0')変数 s4,s5,s6,s7,s8 によって束縛される文字列オブジェクトについて、
- どれも同じリテラル表現 'AB' を持ちますが、
- すべて異なる文字列オブジェクトです。
これらの文字列オブジェクトを生成するために、??? で何を実行したか、その可能性を模索してください。□
《note》詳細は、中級編「ソースコードの歩き方」で解説します。
関連記事
- Python への扉
- 2006-01-15 Python.use(better) #OOP への扉を開く:オブジェクト
- 2006-02-05 Python.use(better) #OOP への扉を開く:コンテナー
- 2007-06-30 Oh 脳《014》ようこそ Python のトワイライトゾーンへ
- 2009-12-19 Oh 脳《143》続・ようこそ Python のトワイライトゾーンへ
Last updated♪2009/12/26