簡明Python教程 — 15.更多Python的內容

來源:互聯網
上載者:User

簡明Python教程 --- 15.更多Python的內容

 

特殊的方法

   在類中,某些方法是有特殊含義的,這在前面也提到過。例如__init__方法和__del__方法。

   這些特殊的方法是非常有用的,例如,你想讓你的類的對象可以使用索引,比如obj[key],那麼只要你的類中實現了__getitem__方法就可以了。

   一些特殊的方法:

名稱

說明

__init__(self,...)

這個方法在建立對象恰好要被返回使用之前被調用。

__del__(self)

恰好在對象要被刪除之前調用。

__str__(self)

在我們對對象使用

print

語句或是使用

str()

的時候調用。

__lt__(self,other)

當使用

小於

運算子(<)的時候調用。類似地,對於所有的運算子(+,>等等)都有特殊的方法。

__getitem__(self,key)

使用

x[key]

索引操作符的時候調用。

__len__(self)

對序列對象使用內建的

len()

函數的時候調用。

單語句塊

   在之前的介紹中,你已經看到,在Python中,語句塊是通過縮排來表示它們屬於同一層次,並且是上一層次的子層次。

   但是,並不是所有情況下,都需要換行縮排。如果一個語句塊中只有一條語句。並且它的上一層次是判斷條件陳述式或迴圈語句,那麼這個語句塊可以和上一層次寫到同一行中。例如:

   flag = True;

   if flag : print 'flag is True.';

列表綜合

   通過列表綜合,你可以使用迴圈語句初始化一個列表:

   list1 = [1, 2, 5, 3, 7, 8];

   list2 = [i for i in list1 if i > 3];

讓函數接收列表或元群組類型的參數

   當要使函數接收元組或字典形式的參數的時候,有一種特殊的方法,它分別使用*和**首碼。

   def method(arg1, *args)

   由於在args變數前有*首碼,所有多餘的函數參數都會作為一個元組儲存在args中。如果使用的是**首碼,多餘的參數則會被認為是一個字典的鍵/值對。

lambda形式

   lambda語句被用來建立新的函數對象,並且在運行時返回它們。

   def method(prefix) :

      return lambda s : prefix + ":" + s;

newMethod = method("abc");

print newMethod("111");

print newMethod("222");

lambda語句用來建立函數對象。本質上,lambda需要一個參數,後面僅跟單個運算式作為函數體,而運算式的值被這個建立的函數返回。

注意,即便是print語句也不能用在lambda形式中,只能使用運算式。

exec和eval語句

exec語句用來執行儲存在字串或檔案中的Python語句。

例如,我們可以在運行時產生一個包含Python代碼的字串,然後使用exec語句執行這些語句。

exec 'print "Hello World"';

eval語句用來計算儲存在字串中的有效Python運算式。例如:

eval("2*3");

assert語句

assert語句用來聲明某個條件是真的。

例如,如果你非常確信某個你使用的列表中至少有一個元素,而你想要檢驗這一點,並且在它非真的時候引發一個錯誤,那麼assert語句是應用在這種情形下的理想語句。

當assert語句失敗的時候,會引發一個AssertionError。

list = ["abc"];

assert len(list) > 1;

repr函數

repr函數用來取得對象的規範字串表示。

list = ["item1", "item2"];

print repr(list);

執行上面的程式,將會輸出:["item1", "item2"]。

注意,在大多數時候有eval(repr(object)) == object。你可以通過定義類的__repr__方法來控制你的對象在被repr函數調用的時候返回的內容。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.