<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 一、基本原理 Python中一切都是對象,變量是對象的引用。這是一個普遍的法則。我們舉個例子來說,Python是如何來處理的。 ~~~ x = 'blue' y = 'green' z = x ~~~ 當python執行上面第一句的時候,會在heap中首先創建一個str對象,其文本內容為blue,同時還創建一個名為x的對象引用,x引用的就是這個str對象。第二句也是類似;第三條創建了一個名為z的新對象引用,并將其設置為對象引用x所指向的相同對象。如下圖的變化。 ![](https://box.kancloud.cn/fcabcb1592078b5adda1f9c7b3a4da0d_596x318.png) 所以看出在Python中賦值操作符號“=”的作用是,將對象引用和內存中的某個對象進行綁定。如果對象已經存在,就進行簡單的重新綁定,以便引用“=”右邊的對象;如果對象引用尚未存在,就首先創建對象,然后將對象引用和對象進行綁定。 Python使用“動態類型”機制,也就是說,在Python程序中,任何時候可以根據需要,某個對象引用都可以重新綁定到另一個不同的對象上(不要求是相同的類型),這和其他強化型語言如(C++,Java)不太一樣,只允許重新綁定相同類型的對象上。在Python中,因為有“動態類型”機制,所以一個對象引用可以執行不同類型的對象適用的方法。當一個對象不存在任何對象引用的時候,就進入了垃圾收集的過程。 查看類型程序: ~~~ import types type(100) ~~~ ~~~ >>> a=100 >>> a/10 10 >>> a[0] Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> a[0] TypeError: 'int' object has no attribute '__getitem__' >>> a='hello' >>> a[0] 'h' >>> a/10 Traceback (most recent call last): File "<pyshell#8>", line 1, in <module> a/10 TypeError: unsupported operand type(s) for /: 'str' and 'int' >>> ~~~ 第一句 a = 100? Python會在heap創建一個int對象,其內容為100,同時創建a變量,其值指向heap中的int對象 ![](https://box.kancloud.cn/0e5865b3f0a2668b26967b2f9d029eb1_174x251.png) 第二句 a/10 Python適用“動態類型”機制,判斷a指向的對象是int型,可以適用/(除法)操作。于是便進行運算產生結果。(它會在heap中在創建一個10.0的對象么?) 第三句 a[0] Python適用“動態類型”機制,判斷a指向的對象是int型,并不適用[](分片)操作。于是就進行報錯。 第四句 a = 'hello' Python會在heap創建一個str對象,其內容為hello,同時改變a變量,使得其值指向heap中的str對象。同時原來的int對象,由于不在存在對象引用,所以就進入了垃圾收集過程。 ![](https://box.kancloud.cn/1579dbd5cdbfd410b40d71cd8271a158_306x255.png) 第五句 a[0] Python適用“動態類型”機制,判斷a指向的對象是str型,可以適用[](分片)操作。于是便進行運算產生結果。 第六句 a/10 Python適用“動態類型”機制,判斷a指向的對象是str型,并不適用/(除法)操作。于是就進行報錯。 **總之**:在Python中一切都是對象,變量總是存放對象引用。當一個對象沒有變量指向它的時候,它便進入了垃圾收集過程。Python的“動態類型”機制,負責檢查變量的對象引用適用操作。如果該對象不適用該操作,則會直接報錯。一句話”**變量無類型,對象有類型**“ ### 二、python的id(),==,is的差別 1. id():獲取的是對象在內存中的地址 2. is :比對2個變量的**對象引用**(對象在內存中的地址,即id() 獲得的值)**是否相同**。如果相同則返回True,否則返回False。換句話說,就是比對2個變量的對象引用是否指向同一個對象。 3. ==:比對2個變量指向的對象的內容是否相同。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看