一.def函式
如果我們用**實現了乙個小功能,但想要在程式**中重複使用,不能在**中到處貼上這些**,因為這樣做違反 了軟體工程中 dry原則。 python 提供了 函式功能,可以將我們這部分功能抽象成乙個函式以方便程式呼叫,或者提供給其他模組使用。
例子:二.函式引數
我們在使用的呼叫函式的時候,想要指定一些變數的值在函式中使用,那麼這些變數就是函式的引數,函式呼叫的時候, 傳入即可。
例子:在這裡定義的乙個函式,其引數就是兩個數值,函式的功能就是把兩個引數加起來。執行指令碼後,在 python 提示符內呼叫函式 func, 如果不指定引數 func(), 那麼將會出錯; 輸出 func(1, 2),將 a=1, b=2 傳入函式,輸出 the c is 3 。所以在呼叫函式時候,引數個數和位置一定要按照函式定義。如果我們忘記了函式的引數的位置,只知道各個引數的名字,可以在 函式呼叫的過程中給指明特定的引數 func(a=1, b=2), 這樣的話,引數的位置將不受影響,所以 func(b=2,a=1)是同樣的 的效果。
三.函式預設引數
我們在定義函式時有時候有些引數在大部分情況下是相同的,只不過為了提高函式的適用性,提供了一些備選的引數, 為了方便函式呼叫,我們可以將這些引數設定為預設引數,那麼該引數在函式呼叫過程中可以不需要明確給出。
1.例子:
在這裡定義了乙個 sale_car 函式,引數為車的屬性,但除了 price 之外,像 color, brand 和 is_second_hand 都是有預設值的,如果我們呼叫函式 sale_car(1000), 那麼與 sale_car(1000, 'red', 'carmy', true) 是一樣的效果。當然也可以在函式呼叫過程中傳入特定的引數用來修改預設引數。通過預設引數可以減輕我們函式呼叫的複雜度。
2.高階
① 自呼叫:
如果想要在執行指令碼的時候執行一些**,比如單元測試,可以在指令碼最後加上單元測試 **,但是該指令碼作為乙個模組對外提供功能的時候單元測試**也會執行,這些往往我們不想要的,我們可以把這些**放入指令碼最後:
如果執行該指令碼的時候,該 if 判斷語句將會是 true,那麼內部的**將會執行。 如果外部呼叫該指令碼,if 判斷語句則為 false,內部**將不會執行。
② 可變引數:
顧名思義,函式的可變引數是傳入的引數可以變化的,1個,2個到任意個。當然可以將這些 引數封裝成乙個 list 或者 tuple 傳入,但不夠 pythonic。使用可變引數可以很好解決該問題,注意可變引數在函式定義不能出現在特定引數和預設引數前面,因為可變引數會吞噬掉這些引數。
定義了乙個函式,傳入乙個引數為 name, 後面的引數 *grades 使用了 * 修飾,表明該引數是乙個可變引數,這是乙個可迭代的物件。該函式輸入姓名和各科的成績,輸出姓名和總共成績。所以可以這樣呼叫函式 report('mike', 8, 9),輸出的結果為 mike total grade is 17, 也可以這樣呼叫 report('mike', 8, 9, 10),輸出的結果為 mike total grade is 27
③ 關鍵字引數:
關鍵字引數可以傳入0個或者任意個含引數名的引數,這些引數名在函式定義中並沒有出現,這些引數在函式內部自動封裝成乙個字典(dict).
定義了乙個函式,傳入乙個引數 name, 和關鍵字引數 kw,使用了 ** 修飾。表明該引數是關鍵字引數,通常來講關鍵字引數是放在函式引數列表的最後。呼叫引數 portrait('mike', age=24, country='china', education='bachelor') 輸出
RobotFramewor自定義Python庫
最近在看rf 接觸到自定義的python庫的用法,記錄於此 1.網上常用的方法 2.直接在rf中引用python檔案 3.中使用import library關鍵字引用python檔案 4.結果展示 5.rf 與 selenium互動 1.網上常用的方法 1 在python安裝目錄下的lib site...
python中建立類role 初識Python類
吐槽 學習物件導向就像你追乙個女神一樣,剛剛有點感覺了,過幾天又陷入絕望的感覺,很蛋疼。類的語法 classperson object print learning class test person test就是類person的例項化物件 例項化,就是以person類為模板,在記憶體裡開闢一塊空間...
在python中輸出 在輸出中列印Python版本
如何從指令碼中列印當前python安裝的版本號?嘗試import sys print sys.version 這將列印完整的版本資訊字串。如果您只想要python版本號,那麼bastien l onard的解決方案是最好的。您可能想檢查完整的字串,看看是否需要它或它的一部分。import platf...