函式1
(1)定義:
def 函式名(引數列表)
函式體(2)引數傳遞:
在python中,一切都是物件,型別也屬於物件,變數是沒有型別的。
a = [1,2,3]
a = "helloworld"
以上**中,[1,2,3]是list型別,"helloworld"是string型別,而變數a是沒有型別的,它僅僅是乙個物件的引用(乙個指標),可以是指向list型別物件,也可以指向string型別物件。
可更改(mutable)和不可更改(immutable)物件:
在python中,string,tuples,numbers是不可更改物件,而list,dictionary等是可修改物件。
①不可變型別:變數賦值a = 5後再賦值a = 10,這裡實際是新生成乙個int值物件10,再讓a指向它,而5被丟棄,不是改變了a的值,相當於新生成了a.
②可變型別:變數賦值list= [1,2,3,4]後再賦值list[2] = 5,則是將列表list的第三個元素值更改,本身沒有動,只是內部的一部分值被修改了。
python函式的引數傳遞:
①不可變型別:類似於(值傳遞),如 整數(number)、字串(string)、元組(tuple)。如fun(a),傳遞的只是a的值,沒有影響a物件本身。
比如在 fun(a)內部修改 a 的值,只是修改另乙個複製的物件,不會影響 a 本身。
1 defchange(a, b):2 """傳遞不可變物件,交換兩個數的值"""
3 c =a4 a =b5 b =c6
7 x = 2
8 y = 3
10 change(x, y)11
12 print(x, y)
輸出結果:
2 3可以發現,將x,y的值傳入change函式,進行交換後,輸出x,y的值還是原來的值,這就是不可變型別傳遞。
②可變型別: 類似於(引用傳遞),如 列表(list),字典(dict)。如 fun(list),則是將 list 真正的傳過去,修改後fun外部的list也會受影響。
1 defalter_list(list):2 """傳遞可變物件,修改列表的值"""
3 list[0] = 3
5 list1 = [1, 2, 3, 4, 5]6 alter_list(list1)7 print(list1)
輸出結果:
[3, 2, 3, 4, 5]
可以發現,list1中的值發生了改變,同樣的寫法,上面的例子中的值沒有改變,而下面的值卻改變,這就是因為不可變型別和可變型別的引數傳遞。
注意:python 中一切都是物件,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變物件和傳可變物件。
(3)引數:
必須引數,位置引數,關鍵字引數,預設引數,不定長引數。
①必須引數: 呼叫函式時必須傳入乙個引數。
1 deffunc(a):2 print(a)3
4 func() #沒有引數會報錯
②位置引數:在傳遞引數時必須與形參的順序對應。
1 deffunc(a, b):2 print('a=%s'%a)3 print('b=%s'%b)4
5 func(2, 3)6 func(3, 2)
③關鍵字引數:使用關鍵字引數允許函式呼叫時引數的順序與宣告時不一致,因為 python 直譯器能夠用引數名匹配引數值。
1 deffunc(a, b):2 print('a=%s'%a)3 print('b=%s'%b)4
5 func(a=2, b=3)6 func(b=3, a=2)
④預設引數:呼叫函式時,如果沒有傳遞引數,則會使用預設引數。
1 def func(a, b=3):2 print('a=%s'%a)3 print('b=%s'%b)4
5 func(2)
⑤不定長引數: def 函式名(形參1,*形參2) 加了星號*的引數會以元組(tuple)的形式匯入,存放所有未命名的變數引數。
def 函式名(形參1,**形參2) 加了兩個星號**的引數會以字典的形式匯入。
1 def func1(a, *b):2 print(a)3 print(b)4
5 func1(3, 4, 5, 'a', [1, 2, 3])6
7 def func2(a, **b):8print(a)9 print(b)10
11 func2(3, c=4, d=5) # 因為**要以字典的形式儲存,而字典需要key值和value值,所以傳參的時候要用這種方式
輸出結果:
3(4, 5, 'a', [1, 2, 3])3
Python函式學習 函式 引數
本篇是對 python3函式的學習與小結,用於複習鞏固使用,如有理解偏差的地方,還望各位大佬指正。函式的作用 函式的分類 小結 def 函式名 引數列表 函式體 塊 return 返回值 小結 函式名 str 函式定義,只是宣告了乙個函式,它不會被執行,需要呼叫 呼叫的方式,就是函式名後加上小括號,...
Python函式學習 引數型別
在定義python函式時可定義形參,這些引數在呼叫時候才能確定具體的值,由函式的呼叫者負責為行參傳入引數值 也叫必傳引數,順序引數,是最重要的,也是必須在呼叫函式時明確提供的引數!位置引數必須按先後順序,一一對應,個數不多不少的傳遞!說明 a,b,c是函式add的行參,沒有具體的值,只有在add x...
python函式引數學習筆記
1 引數的傳遞是通過自動將物件賦值給本地變數名來實現的。函式引數 呼叫者傳送的 可能的 共享物件的引用值 所有的引數實際上都是通過指標進行傳遞的。作為引數被傳遞的物件從裡不自動拷貝。2 在函式內部的引數名的賦值不會影響呼叫者。在函式執行時,在函式頭部的引數名是乙個新的 本地變了,這個變數名時再函式的...