這次我們將通過幾個例項,瞭解一下關鍵字引數的使用。在Python中,可以使用"kwarg=value"的形式來使用關鍵字引數。下面我們先看一個例項。
在這個例項中,我們假定是在操作Excel檔案,其中函式get_cell_value是透過指定工作表(sheet),以及對應的行和列,獲取指定單元格的值。
第一種呼叫方法get_cell_value("sheet1", 4, 7)是基於位置判斷的,我們按順序呼叫sheet_name,row,col就可以正確呼叫函式。
第二種方法,get_cell_value("sheet1", col=7, row=4)中,sheet1是一個位置引數,col=7和row4是兩個關鍵字引數。對於關鍵字引數,只要符合"kwarg=value"形式即可,不必保證位置順序和函式宣告時一致,因此,我們看到col=7在前,row=4在後,也可以正確的呼叫函式。
第三種方法,get_cell_value(col=7, row=4, sheet_name="sheet1")中,我們使用了3個關鍵字引數,而沒有使用位置引數。
上面的例子,是一個基礎的關鍵字引數例項。現在我們再增加一些內容,看一下帶預設值的關鍵字引數的使用。
這個例項與之前的例項不同的地方在於,row和col是兩個預設引數。我們看一下程式的執行效果。
透過執行結果可以看出,當我們只使用1個引數呼叫函式時,函式的row和col預設使用了1。在Python中位置引數一定要在關鍵字引數之前,所以第2次函式呼叫時,是先傳入sheet1引數,再傳入col=7。
下面我們再加大一些難度,來看一個更復雜的例項。我們假定在操作Excel的過程中,我們要定義一個函式來專門向指定的工作表(sheet)中填充不確定數量的資料,在填充資料的過程中,為了美觀,我們還可以同時設定單元格的一些樣式屬性,比如字型,大小等等。
*values是一個tuple(元組),它代表包含了形參列表之外的所有位置引數。在這個例項中,就是資料1,資料2,資料3,資料4
**attrib是一個dictionary(字典),它代表所有能對應上形參以外的關鍵字引數,在這個例項中,就是bold : False,font : 宋體,size : 9
關於這兩個引數的解釋真的十分別扭。我們一定要再詳細的看一下函式的呼叫,以及程式的執行效果。
我使用的環境:Windows 7 + Python 2.7.17 + PyCharm Community Edition 2016.1.5