Python 板


LINE

前辈大家好 我是刚学python不到一个礼拜的新手 多多指教... 因为我不是资讯背景 也才刚接触python (为了parse....) 若是用词有错 请告诉我唷 不过看了这一系列的文章 我发现到下面有趣事情耶...(Mac OS 10.5.6、python 2.5.1) -- 例子1 指派简单的文字和数字 给予一个变数 >>> x = 3 >>> x is 3 True >>> x = '3' >>> x is '3' True -- 例子2 当文字出现了空格 指派给予一个变数 >>> id('3 ') 432320 >>> id('3 ') 432320 >>> x = '3 ' >>> x is '3 ' False >>> id('3 ') #位址改变了 432608 >>> id('3 ') 432608 -- 例子3 文字顺序的变化 id位址皆为2重复 >>> id('3 ') #测试含有space的字串 432288 >>> id('3 ') #连续找寻位置两次 位址不变 432288 >>> id(' 3') #不同顺序的文字 结果位址一样 432288 >>> id(' 3') 432288 >>> id('3 ') #即使回头看原本的顺序 位址还是没变 432288 >>> id('3 ') 432288 >>> id('3') #若只剩下一个字元 则位址改变了 432576 >>> id('3 ') #这时再回头看原本字串时 位址变了 432640 >>> id('3 ') 432640 >>> id(' 3') #但是同字串不同顺序的文字 位址会是同样的地方 432640 >>> id(' 3') 432640 >>> id('123') #换了不同字串 结果位址还是一样! 432640 >>> id('123') 432640 >>> id('345') #同上一样含有'3' 432640 >>> id('345') 432640 >>> id('789') #在换一个截然不同的字串 结果位址一样 432640 >>> id('789') 432640 >>> id('3') #再看回字串'3' 结果位址又跳回432576 跟之前一样 432576 >>> id('3') 432576 >>> id('789') #不意外 再回头看原本的字串 位址重新被指定了 431936 >>> id('789') 431936 >>> id('I love you') #把字串内的数字换成含space的文字试试看 结果位址变了 439384 >>> id('I love you') 439384 >>> id('83920382903820') #那再把字串换回庞大数字 位址却没变 439384 >>> id('83920382903820') 439384 >>> id('789') #再换成小的数字 结果位址竟然又改变了!而且跟之前不一样 432608 >>> id('789') 432608 >>> id('333') #换成别的数字呢 结果位址还是没变 432608 >>> id('333') 432608 >>> id('OH') #从数字换成简单的文字 位址没变! 432608 >>> id('OH') 432608 >>> id('OH MY GOD') #但是将文字换成含space的文字时 位址又改变了 439384 >>> id('OH MY GOD') 439384 >>> id('OH MY BABY') #换个不同的复杂字串 位置依然没变 439384 >>> id('OH MY BABY') 439384 >>> id('We bring nothing into the world') #更复杂呢?结果变了 261832 >>> id('We bring nothing into the world') 261832 >>> id('OH MY BABY') #回头看看原本字串的位址 结果还在那边 439384 >>> id('OH MY BABY') 439384 >>> id('789') #让我们看看老朋友在哪里 结果跟最後出现的位址一样!! 432608 >>> id('789') 432608 >>> id('money') #换成单字也不变位址 432608 >>> id('money') 432608 >>> id('m') #但是换成字母 位址又变了 138304 >>> id('m') 138304 >>> id('o') #换成另外一个字母 也还是变了 291168 >>> id('o') 291168 >>> id('n') #再换另外一个字母呢? 也是变了... 184000 >>> id('n') 184000 >>> id('o') #回头看看字母o的位址 还是在那边 291168 >>> id('o') 291168 >>> id('m') #回头看看字母m的位址 还是在原地 138304 >>> id('m') 138304 >>> id('3') #很久以前有出现过的'3' 位址还是一样 432576 >>> id('3') 432576 >>> id('We bring nothing into the world') #记得这句话吗? 位址依然一样 261832 >>> id('We bring nothing into the world') 261832 >>> id('thanks')#再换回单字 位址跟第一次出现'123','345','789'一样! 432640 >>> id('thanks') 432640 -- 例子4 承上 指派有space和没有space给予一个变数时... >>> x = 'thanks' >>> id(x) #将变数设定为此单字时 位址竟然变了! 432608 >>> x is 'thanks' True >>> x = 'OH' #同样变数设定为别的单字 还是改变! >>> id(x) 432416 >>> x is 'OH' True >>> x = '333' #换成数字 也是改变! >>> id(x) 431936 >>> x is '333' True >>> x = 'OH' #在例子3中 id('333')换成id('OH')位址不变 但是设定变数却会改变 >>> id(x) #而且位址是跟'thanks'一样的位址! 432608 >>> x is 'OH' True >>> id('thank you') #这是最後最重要的测试 当使用含有space的字串时.... 439184 >>> x = 'thank you' #将x设定为此字串 >>> id(x) 439184 #x的位址跟原本字串位址的一样 >>> id('thank you') 439304 #但是原本相同内容的字串位址却变了 >>> x is 'thank you' False #所以出现了前面没有出现过False >>> id('999955556666') #这时候测试巨大数字 发现位址跟之前例子3一样 不会变 439304 >>> x = '999955556666' #再次把x指派为此巨大数字 看看是否会跟上个反应一样 >>> id(x) 439304 #不意外 x的位址是如预期 >>> id('999955556666') 439304 #但是此巨大数字的位址 却没有改变 >>> x is '999955556666' True #而结果还是出现true -- 例子5 回到一开始的问题 >>> x = '3' >>> x is '3' True >>> x = '3 ' #测试含space的字串 >>> x is '3 ' False -- 例子6 数字位数的变化 >>> id(3) 8402288 >>> id(33) 8401928 >>> id(3) 8402288 >>> id(33) 8401928 >>> id(333) 8404916 >>> id(3) #始终不变 8402288 >>> id(33) #始终不变 8401928 >>> id(333) #跟上次出现的位址不一样 8404952 >>> id(3333) #跟'333'一样 8404952 -- 例子7 数字256附近的变化 做两次 >>> id(255) 8405288 >>> id(256) 8405276 >>> id(257) 8404928 >>> id(258) #跟257一样 8404928 >>> id(255) #跟上次一样 8405288 >>> id(256) #跟上次一样 8405276 >>> id(257) #跟上次不一样 8404916 >>> id(258) #跟257一样 8404916 -- 例子8 奇怪符号 做两次 >>> id('a') 253024 >>> id('b') 253088 >>> id('c') 291072 >>> id('!') 432640 >>> id('@') 432608 >>> id('#') 138720 >>> id('a') #跟上次一样 253024 >>> id('b') #跟上次一样 253088 >>> id('c') #跟上次一样 291072 >>> id('!') #跟上次一样 432640 >>> id('@') #跟上次一样 432608 >>> id('#') #跟上次一样 138720 -- 例子9 不同变数指定为同一含有space的字串时 >>> x = 'thank you' >>> y = 'thank you' >>> x is 'thank you' False >>> y is 'thank you' False >>> x is y False -- 以下为我的发现和推测... (用字不正确 或内容有错 就请多多指教罗) 1)数字256以内 和 任何单一字元 位址永远不变 (似乎跟16进位有关) 即一开始就被定义好位址 2)数字超过256 或一个字元 其位址就并非永远固定 如换成16进位後 其位数不同 会有不同的位址等待被写入 若是位数相同 则会在同样位址重复写入 3)承上 若是下一个指派的位数不同而跳到别的位址去记忆时 下次再输入回原本位数的字串 则不一定会回到原本位址 有可能有适合的清单 4)当一个字串被派为一个变数时 其字串位址就会被固定 直到没有变数指定为止 但若是字串中含有space 则被指派给一个变数後 新输入相同字串的位置会改变 -- 以上我是胡乱猜测 希望有高人愿意解释一下罗~ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.129.77.5 ※ 编辑: leondemon 来自: 140.129.77.5 (03/21 04:04) ※ 编辑: leondemon 来自: 140.129.77.5 (03/21 04:05)
1F:→ leondemon:另外发现space换成!@也是一样... 03/21 04:07
※ 编辑: leondemon 来自: 140.129.77.5 (03/21 04:13)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP