python 自定義函數

關於編程,有三種方式

1、面向對象編程---->類      關鍵字:class   

2、面向過程編程---->過程  關鍵字:def

3、函數式編程------>函數   關鍵字:def

函數式編程:函數是邏輯化結構化和過程化的一種編程方式,如

def test(x):

   "xxxxx"

   x+=1

   return x

def:定義函數的關鍵字

test:函數名稱

(x):傳入函數的參數

x+=1:泛指邏輯處理塊代碼

"xxxx"函數描述(非必要,但強列建議添加)

定義一個過程,過程無返回值

def fun1():

   "fun1"

   print('fun1')

定義一個函數,函數有返回值

def fun2():

   "fun2"

   print('fun2')

   return 0

函數和過程的調用是一致的:

fun1

fun2

在python中,過程就是一個沒有返回值的函數,過程默認返因一個none,當函數有多個返回值時,將返回元組,這些值將被當做一個元組的元素,即:

返回值個數0:返回NONE

返回值個數1:返回object

返回值個數多個:返回元組

函數的功能:沒有函數的編程只是在寫邏輯(功能),脫離函數,重用邏輯(實現功能),唯一的方式就是複製粘貼,使用函數後簡化代碼,可讀性變高,易擴展(保持一致性)

在定義函數時的參數,我們稱爲行參,如下面的x,y

而調用函數時傳入的參數,我們稱之爲實參,如下面的1、2。

def test(x,y)

   print(x)

   print(y)

test(1,2)

位置調用時行參與實參的位置關係是一一對應的

def test(x,y)

   print(x)

   print(y)

test(1,2)

關鍵字調用時,與實參的位置無關如

 def test(x,y)

     print(x)

     print(y)

test(y=2,x=3)

當位置調用與關鍵字調用混用時,按照位置調用方式執行,但要記位一句話,關鍵字參數不能寫在位置參數前面,即test(3,y=2,6)此種方式將會報錯,應寫成test(3,2,z=6)或test(3,z=2,y=6)



當函數中有默認的參數值時如

def test(x,y=1)

    .....

   return   0

當調用這個函數時,如果不傳入y的值時,y的值將採用默認值,如果傳入新的y的值時,默認y的值將被覆蓋。

默認值使用的場合:

1、軟件安裝的時候

2、連接數據庫的端口

參數組:當行參或實參數量不固定的時候時使用,可與默認參數或行參混用,參數組一定要最至最後

def test(*args)#接收N個位置參數    #def test(name,*args)   #def test(name,age=1,*args)

   print(args)

test(1,2,3,4,5……)

test(*[1,2,3,4……])

最終實參會被變成一個元組如:

def fun(agr1,agr2,*args)

   pass

fun(1,2,3,4,5)

====結果=====

1,2,(3,4,5)

這種方式是預留以後當需要傳多個參數時使用而不變動太多的代碼

傳入不定數量字典時:把N個關鍵字參數轉換成字典的方式,可與默認參數或行參混用,參數組一定要最至最後

def test(agrs1,agrs2,**kwargs)  #接收N個關鍵字參數

   # print(kwagrs)

   # print(kwagrs['name'])

   # print(kwagrs['age'])

    pass

test(3,5,name='a',age=23,sex='F')#以關鍵字的方式傳值

=====結果====

3,5,{'name':'a','age':23,'sex':'f'}

test(**{name:'a',age:8,sex:'F'})

###位置參數不能寫在關鍵字參數後面,否則程序會報錯

函數調用函數

def test1()

    print......

 

def test2()

       print...

       test1()   #調用test1

 

print(test2())  #調用



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章