python基礎知識學習第六天

2021-10-01 16:02:17 字數 2923 閱讀 5415

定義乙個函式

定義乙個由自己想要功能的函式,以下是簡單的規則:

一般格式如下:

def 函式名(引數列表):

函式體1

2預設情況下,引數值和引數名稱是按函式宣告中定義的順序匹配起來的。

函式呼叫

給了函式乙個名稱,指定了函式裡包含的引數,和**塊結構。

這個函式的基本結構完成以後,你可以通過另乙個函式呼叫執行,也可以直接從 python 命令提示符執行。

上面已經有例子了,就不舉了。

引數傳遞

在 python 中,型別屬於物件,變數是沒有型別的:

a = 'abc'

a = [1, 2, 3]12

以上**中,[1,2,3] 是 list 型別,「runoob」 是 string 型別,而變數 a 是沒有型別,她僅僅是乙個物件的引用(乙個指標),可以是指向 list 型別物件,也可以是指向 string 型別物件。

可更改(mutable)與不可更改(immutable)物件

在 python 中,strings, tuples, 和 numbers 是不可更改的物件,而 list,dict 等則是可以修改的物件。

不可變型別 :變數賦值 a = 5 後再賦值 a = 10,這裡實際是新生成乙個 int 值物件 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當於新生成了a。

可變型別 :變數賦值 la = [1,2,3,4] 後再賦值 la[2] = 5 則是將 list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。

python 函式的引數傳遞:

不可變型別 :類似 c++ 的值傳遞,如 整數、字串、元組。如fun(a),傳遞的只是a的值,沒有影響a物件本身。比如在 fun(a)內部修改 a 的值,只是修改另乙個複製的物件,不會影響 a 本身。

可變型別 :類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正位址的傳過去,修改後fun外部的 la 也會受影響。

python 中一切都是物件,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變物件和傳可變物件。

傳不可變物件例項

首先是 number:

然後是 string:

最後是 tuple:

傳可變物件例項

首先是 dictionary:

找字典的內容時,學到乙個 dic 的新方法,popitem() 隨機返回並刪除字典中的最後一對鍵和值。為什麼是隨機刪除呢?因為字典是無序的,沒有所謂的「最後一項」或是其它順序。在工作時如果遇到需要逐一刪除項的工作,用popitem()方法效率很高。

然後是 list:

最後是 set:

引數以下是呼叫函式時可使用的正式引數型別:

必需引數

關鍵字引數

預設引數

不定長引數

必需引數

必需引數須以正確的順序傳入函式。呼叫時的數量必須和宣告時的一樣。

關鍵字引數

關鍵字引數和函式呼叫關係緊密,函式呼叫使用關鍵字引數來確定傳入的引數值。

使用關鍵字引數允許函式呼叫時引數的順序與宣告時不一致,因為 python 直譯器能夠用引數名匹配引數值。

例如:預設引數

呼叫函式時,如果沒有傳遞引數,則會使用預設引數。

不定長引數

當你不確定傳入引數多少的時候,你可能需要該函式能處理任意數量的引數。這些引數叫做不定長引數,和上述 2 種引數不同,宣告時不會命名。

基本語法如下:

def functionname([formal_args,] *var_args_tuple ):

"函式_文件字串"

function_suite

return [expression]12

34加了星號 * 的引數會以元組(tuple)的形式匯入,存放所有未命名的變數引數。

先看乙個簡單的例子:

如果在函式呼叫時沒有指定引數,它就是乙個空元組。我們也可以不向函式傳遞未命名的變數。功能是可以收集除了必選引數以外剩餘的位置引數,會根據傳進引數的位置合併成乙個元組。

如下例項:

還有一種就是引數帶兩個星號 ** ,加了兩個星號 ** 的引數會以字典的形式匯入。功能是收集除定義的變數的關鍵字引數之外,其它剩餘關鍵字引數。

基本語法如下:

def functionname([formal_args,] **var_args_dict ):

"函式_文件字串"

function_suite

return [expression]12

34注意:在python中定義函式,可以用必選引數、預設引數、可變引數和關鍵字引數,這4中引數可以一起使用,或者是只用其中的某些。但是注意,引數定義與呼叫的順序必須是:

必選引數【位置引數】、預設引數、可變引數【包裹位置】和關鍵字引數【包裹關鍵字】。(預設引數與包裹位置引數可以根據需求進行位置調換)

匿名函式

python 使用 lambda 來建立匿名函式。

所謂匿名,即不再使用 def 語句這樣標準的形式定義乙個函式。

lambda 只是乙個表示式,函式體比 def 簡單很多。

lambda的主體是乙個表示式,而不是乙個**塊。僅僅能在lambda表示式中封裝有限的邏輯進去。

lambda 函式擁有自己的命名空間,且不能訪問自己引數列表之外或全域性命名空間裡的引數。

雖然lambda函式看起來只能寫一行,卻不等同於c或c++的內聯函式,後者的目的是呼叫小函式時不占用棧記憶體從而增加執行效率。

語法lambda 函式的語法只包含乙個語句,如下:

lambda [arg1 [,arg2,…argn]]:expression

如下例項:

return語句

return [表示式] 語句用於退出函式,選擇性地向呼叫方返回乙個表示式。不帶引數值的return語句返回none。

之前的例子都沒有示範如何返回數值,以下例項演示了 return 語句的用法:

python學習 第六天

在下這廂有禮了 原始碼安裝說明 很多第三方庫都是開源的,幾乎都可以在github或者pypi上找到原始碼,找到的原始碼的格式大都是zip tar.zip tar.bz2格式的壓縮包。解壓這些壓縮包,會看到setup.py的檔案。開啟命令列,進入資料夾。執行 這個命令,就能把這個第三庫安裝到系統中,也...

學習python 第六天

字串的一些方法 1 字串擷取 print s 0 3 print s print s 1 s 開始 終止 步長 2 去空格 s.strip 消除字串s兩邊的空格 print s.strip print s.lstrip 去左空格 print s.rstrip 去右空格3 字串複製 位址相同 s co...

python學習第六天

巢狀 有時候需要將一系列字典儲存在列表中,或將列表作為值儲存在字典中。字典列表 alien 0 alien 1 alien 2 aliens alien 0,alien 1,alien 2 for alien in aliens print alien 在字典中儲存列表 pizza crust th...