1、函數是用來幹嘛的?
函數是用來被調用的,因爲函數裏面包含各種方法,實際上是使用函數中的各個方法。
2、爲什麼要寫函數,使用函數的好處?
(1)代碼重用
(2)保持一致性,易維護
(3)可擴展性
3、函數的創建
def test(x):
"The function definitions"
y=2*x+6
return y
print(test)
a=test(3)
print(a)
輸出結果:
<function test at 0x00E8B6A0> #函數的內存地址
12
說明:
def——定義函數的關鍵字
test——函數名,自己起的
“”——文檔描述(非必要,但是強烈建議給你的函數添加描述信息)
()內的x——是參數,參數可以有多個,也可以沒有
y=2*x+6——泛指代碼塊或程序處理邏輯
return——定義返回值
test()——函數名()就是運行,執行該程序
若有兩個重名的函數,以第二個爲準,因爲Python語言是從上到下執行的,後面的會覆蓋前面的。
4、返回值總結:
返回值數爲0,則返回None
返回值數爲1,則返回當前值
返回值數爲2,則返回一個元組,所有的值在元組中體現
5、函數的參數
(1)形參:形參變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的單元,因此,形參只在函數內部有效,函數調用結束返回主調用函數後則不能再使用該形參變量。
(2)實參:實參可以是常量、變量、表達式、函數等無論實參是何種類型的量,在進行函數調用時,它們必須有確定的值以便把這些值傳給形參。
(3)關係:實參與形參的位置是一 一對應的,即位置參數;還可以用關鍵字參數表示,即指定輸出一個等式。
(4)位置參數必須在關鍵字參數左邊,否則報錯,建議最好不要混合使用。
(5)位置參數必須一 一對應,多了不行,少了也不行。
示例如下:
def test(x,y): #形參
z = x**y
return z
P = test(1,2) #位置參數,默認x=1,y=2
print(P)
w = test(2,3) #實參
print(w)
O = test(y=2,x=1) #關鍵字參數
print(O)
#輸出結果:
1
8
1
(6)函數的默認參數
即形參是默認選擇的,就比如安裝軟件時的默認選項,例子如下,其中,參數帶了屬性就交租默認參數。
def test(function1=True,function2=False,function3=True):
pass
(7)參數組
參數組包含:元組形式(*args)、字典形式(**args),示例如下
def test(x,*args):
print(x)
print(args)
test(1,2,3,4,5,6)
test(666,[1,2,3,4])
test(888,{"name":"zhm"})
test(1)
#輸出結果:
1
(2, 3, 4, 5, 6)
666
([1, 2, 3, 4],)
888
({'name': 'zhm'},)
1
()
兩個一起使用:
def test(x,*args,**kwargs):
print(x)
print(args)
print(kwargs)
test(1,2,3,4,5,6,y=5,z=0)
#輸出結果:
1
(2, 3, 4, 5, 6)
{'y': 5, 'z': 0}
運行時加*,相當於遍歷一遍:
def test(x,*args):
print(x)
print(args)
test(1,[2,3,4,5,6])
test(2,*[2,3,4,5,6])
#輸出結果:
1
([2, 3, 4, 5, 6],)
2
(2, 3, 4, 5, 6)
注意:
(1)第一個值固定後,剩下的值都放進*args裏,組成一個元組,無論剩下的值是數字、
字符串、列表、還是字典,都不例外。
(2)第二個值裏允許爲空,則只輸出一個空元組。
(3)**kwargs同理,只是組成的是字典。
(4)一個參數不能傳兩個值,也會報錯。
(5)可以兩個同時使用,如上,可以用來接收任何形式的值。