標籤:pre 資料 span cal 格式 函數實現 括弧 The pytho
函數是什麼?
函數一詞來源於數學,但編程中的「函數」概念,與數學中的函數是有很大不同的。編程中的函數在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子過程或子程式),在Pascal中叫做procedure(過程)和function,在C中只有function,在Java裡面叫做method。
定義: 函數是指將一組語句的集合通過一個名字(函數名)封裝起來,要想執行這個函數,只需調用其函數名即可
特性:
- 減少重複代碼(重複的代碼可以通過一個函數實現)
- 使程式變的可擴充
- 使程式變得易維護(修改部分功能可以通過修改函數來實現)
函數的基本格式:
def test(x,y,z): print(x) print(y) print(z)
如上,這就是在python中的基本定義方法:def 是定義函數的基本格式,test是這裡的函數名,:下面的內容就是具體要實現的功能。
這個時候我們再來討論一下函數括弧裡面的東西,我們叫它們為參數。像test(x,y,z)中的x,y,z我們稱之為形式參數,當我們給它們賦值,比如x=1之後,1就是實際參數。
關於一些參數的補充:
def test(x,y,z): print(x) print(y) print(z)test(1,2)#位置參數test(y=1,x=2)#關鍵字參數#test(2,y=3,6)這裡是錯誤的,關鍵字參數必須寫在位置參數的後面
預設參數:調用函數時,預設函數非必須傳遞(用於定義函數,為參數提供預設值,調用函數時可傳可不傳該預設參數的值)
函數的傳回值:
def fun1(): ‘‘‘函數‘‘‘ print("in the func1") return 0def fun2(): ‘‘‘過程‘‘‘ print("in the func2")
在fun1中最後一行return 0 ,所以這個函數的傳回值是0
而在fun2中,我們沒有寫傳回值,但是不代表它沒有傳回值,在PYTHON中此時的傳回值是None。
當然我們的傳回值不只是數字或者字串,也可返回一些變數的記憶體位址。
關鍵字參數:
def test(name,age=22,*args,**kwargs): print(name) print(age) print(args) print(kwargs)test(‘周栩強‘,11,22,sex=‘man‘)
在這裡,*args參數傳入資料之後,以元組的形式儲存。**kwargs則是以字典的形式儲存。
這裡我們要注意的是
#**kwargs:用於接受關鍵字參數,不能接受位置參數
而*args則剛好相反
python之函數整理