• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            糯米

            TI DaVinci, gstreamer, ffmpeg
            隨筆 - 167, 文章 - 0, 評(píng)論 - 47, 引用 - 0
            數(shù)據(jù)加載中……

            python中最容易讓人火大的兩個(gè)問(wèn)題

            1. list對(duì)象的*操作符
            >>> a = [[1]]*10
            >>> a
            [[
            1], [1], [1], [1], [1], [1], [1], [1], [1], [1]]
            >>> a[1][0] = 2
            >>> a
            [[
            2], [2], [2], [2], [2], [2], [2], [2], [2], [2]]
            >>>
            也就是說(shuō),這10個(gè)對(duì)象實(shí)際上是指向的同一個(gè)list對(duì)象。
            這是bug,還是feature?或者是優(yōu)化?
            總之是蠻讓人火大的就是了。
            用 a = [[0] for x in range(10)] 這種寫法就沒有這個(gè)問(wèn)題了。


            2. 深拷貝
            >>> a = [[0] for x in range(10)]
            >>> a
            [[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
            >>> b = list(a)
            >>> b
            [[0], [0], [0], [0], [0], [0], [0], [0], [0], [0]]
            >>> a[1][0] = 2
            >>> b
            [[0], [
            2], [0], [0], [0], [0], [0], [0], [0], [0]]
            >>> 
            b = list(a)
            意味著a和b中都存放這10個(gè)指針。指向[0], [0], [0] .... 這10個(gè)對(duì)象。
            a[1][0] = 2 后 a 自己的值沒有改變,改變的是第二個(gè) [0] 對(duì)象。
            由于 b 也是指向它的,所以打印b的時(shí)候會(huì)發(fā)現(xiàn)這一點(diǎn)。
            這個(gè)問(wèn)題是自己經(jīng)常犯的問(wèn)題,大多都是debug半天才知道怎么回事。
            使用
            import copy
            b = copy.deepcopy(a)
            可以解決這個(gè)問(wèn)題。

            3. 如何避免這些問(wèn)題
            要時(shí)刻記得,python中的對(duì)象就只有兩種,mutable和immutable。也就是可改變和不可改變。
            immutable的包括:str  tuple  int ...
            mutable可改變的包括:list dict ...
            immutable的就是原子的。mutable里面存放的都是指向mutable或者immutable的指針。
            調(diào)試的時(shí)候,可以使用id(obj)獲得每個(gè)對(duì)象的id。這個(gè)貌似就是python管理的運(yùn)行時(shí)的對(duì)象的地址。
            如果發(fā)現(xiàn)兩個(gè)obj的id相同,那他們就是同一個(gè)貨。。

            posted on 2011-02-08 15:38 糯米 閱讀(415) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Python


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久这里都是精品| 国产A级毛片久久久精品毛片| 欧美激情精品久久久久久久| 国内精品久久国产| 亚洲狠狠婷婷综合久久久久 | 亚洲精品WWW久久久久久| 无码国内精品久久人妻麻豆按摩| 久久精品国产亚洲av水果派 | 久久超碰97人人做人人爱| 国产成人精品综合久久久| 亚洲精品乱码久久久久久中文字幕| 无码人妻久久久一区二区三区| 国产精品久久波多野结衣| 久久成人小视频| 久久精品无码一区二区app| 国产精品久久久久久久午夜片| 久久免费大片| 人人狠狠综合久久88成人| 久久久精品人妻一区二区三区蜜桃| 久久精品亚洲福利| 亚洲国产精品无码久久98| 无码国内精品久久综合88 | 精品一区二区久久| 色综合色天天久久婷婷基地| 久久这里有精品视频| 久久精品国产第一区二区三区| 囯产精品久久久久久久久蜜桃| 理论片午午伦夜理片久久| 久久笫一福利免费导航 | 国产精品美女久久久久网| 欧美精品一本久久男人的天堂| 国产精品va久久久久久久| 亚洲日韩中文无码久久| 久久一区二区三区99| 国产精品美女久久久久 | 国产精品99久久久久久董美香| 91久久香蕉国产熟女线看| 91久久精品91久久性色| 久久久亚洲裙底偷窥综合| 久久综合五月丁香久久激情| 欧美一级久久久久久久大片|