python動態性強型別用法執行個體

來源:互聯網
上載者:User
本文執行個體分析了python動態性強型別用法。分享給大家供大家參考。具體如下:

Python變數聲明和定義

與C#不同,Python在使用變數之前無須定義它的類型,試著運行下面的例子:

i = 12 print i

從上邊我們可以看到,變數 i 在使用前並不需要定義,但是必須聲明以及初始化該變數。試著運行下面的例子:

i = 1print i + j

上面的代碼會產生一個異常:“NameError: name 'j' is not defined”,Python提示變數 j 沒有定義。這點和BASIC等弱類型的語言不一樣。在BASIC中,執行上述代碼的時候不會產生異常,你可以在EXCEL的VBA開發環境裡試一下,把 print改為MsgBox就可以,結果會輸出 1 。這說明Python並不是一種類似BASIC的弱類型語言。

另一方面,Python與C#有一個很大的差異就是在程式運行過程中,同一變數名可以(在不同階段)代表不同類型的資料,看看下邊的例子:

i = 1print i,type(i),id(i)i = 10000000000print i,type(i),id(i)i = 1.1print i,type(i),id(i)

變數 i 的類型在程式執行過程中分別經曆了int、long和float的變化,這和靜態類型語言(如C等)有很大不同。靜態語言只要一個變數獲得了一個資料類 型,它就會一直是這個類型,變數名代表的是用來存放資料的記憶體位置。而Python中使用的變數名只是各種資料及對象的引用,用id()擷取的才是存放數 據的記憶體位置,我們輸入的1、10000000000和1.1三個資料均會儲存在id()所指示的這些記憶體位置中,直到記憶體回收車把它拉走(在系統確定你 不再使用它的時候)。這是動態語言的典型特徵,它確定一個變數的類型是在給它賦值的時候。

另一方面,Python又是強型別的,試著運行下邊的例子:

# -*- coding: utf-8 -*-i = 10; j = 'ss'print i+j#正確的寫法是print str(i)+j,輸出10ss

會產生一個異常:“TypeError: unsupported operand type(s) for +: 'int' and 'str'”。在BASIC等弱類型的語言中,上邊的例子會正常運行並返回(雖然有時候是不可預期的)結果。

所以,我們說Python既是一種動態類型語言,同時也是一種強型別的語言,這點是和C#不同的地方。對於Python的這種變數的聲明、定義和使 用方式,C#程式員可能要花一段時間去適應,不過相信你會很快就喜歡上它,因為它讓事情變得更加簡單(而且不會不安全)。而且,C# 4.0 已經開始用類似的方式定義和使用變數(通過在變數名前加關鍵字dynamic),如果你先學了Python變數,將能夠更快的適應C# 4.0的動態編程特徵。

希望本文所述對大家的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.