python動態類型

來源:互聯網
上載者:User

標籤:python基礎

在python中,類型是在運行過程中自動決定的,不是通過代碼的聲明。---非常重要

>>> a=666

  1. 建立一個對象來代表值666(類型的概念是存在於對象中而不是變數名中)

  2. 建立一個變數a(在賦值時建立變數)

  3. 將變數與新的對象3相串連

變數名和對象,在運行a=666後,變數a變成對象666的一個引用,在內部,變數事實上是到對象記憶體空間的一個指標(通過運行常量運算式666而建立)。

在python中從變數到對象的串連稱作引用。引用是一種關係,以記憶體中的指標形式實現。

變數是一個系統資料表的元素,擁有指向對象的串連的空間

對象是分配的一塊記憶體,有足夠的空間儲存他們所代表的值

引用是變數到對象的指標


一個對象都有兩個標準的頭部資訊,一個類型標誌符去標識這個對象的類型,一個引用計數器,用來決定是不是可以回收這個對象。


垃圾收集:

如果這個對象沒有變數名引用了,python的垃圾收集機制就會回收記憶體。是通過這個對象的引用計數器來判斷是否有引用的。


共用引用:

多個變數名引用同一個對象,稱為 共用引用

        >>> a=666

        >>> b=a

        >>> a

        666

        >>> b

        666


        >>> a=666

        >>> b=a

        >>> b

        666

        >>> a='fuck'

        >>> b

        666

        >>>當賦值完fuck後,由常量運算式fuck建立了新的對象(記憶體空間),但變數b依然引用原始的對象666,這個賦值運算改變的不是對象3,而是改變了變數a的引用。從而變數b未改變。(並不是替換原來的對象)

註:給變數賦一個新值,不是替換了原始的對象,而是讓這個變數去引用完全不同的一個對象。


共用引用和在原處修改,以下是列表

        >>> L1=[1,2,3,4]

        >>> L2=L1

        >>> L2

        [1, 2, 3, 4]

        >>> L1[0]=666

        >>> L1

        [666, 2, 3, 4]

        >>> L2

        [666, 2, 3, 4]

        >>>

共用引用和相等

        >>> a=1111

        >>> b=1111

        >>> a is b

        False

        >>> a==b

        True

        >>> x=999

        >>> y=x

        >>> x is y

        True

        >>> x==y

        True

其中“==”比較的是兩個被引用的對象的值是否相等,而is操作符是檢查對象的同一性,兩個變數是否指向同一個對象。


註:例

>>> x=11

>>> x='fuck'

對象11是否立刻被python垃圾收集回收了?不會的。python緩衝並服用了小的整數和小的字串。如:

        >>> m=1111

        >>> n=1111

        >>> n is m

        False


        >>> c=11

        >>> d=11

        >>> c is d

        True           #小的整數和字串被緩衝、複用


        >>> g=1000

        >>> f=1000

        >>> g is f

        False


查詢對象被引用多少次,使用sys模組的getrefcount(對象)

        >>> import sys

        >>> sys.getrefcount(11)

        20

        >>> sys.getrefcount('fuck')

        4


python動態類型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.