1. 程式人生 > >Python函數的定義、參數傳入與函數的調用

Python函數的定義、參數傳入與函數的調用

可變參數 port letter for 免費 python函數 int 參數形式 求和


作為計算機代碼的一種抽象方式,函數在Python中扮演了極為重要的角色。今天給大家介紹Python函數的定義、參數的傳入以及調用方式。其中函數參數的傳入方式為本節重點內容。Python函數的參數形式包括必選參數、默認參數、可變參數、命名關鍵字參數以及關鍵字參數。五類參數可單獨傳入也可組合傳入。

>>>>

Python 函數的定義

Python中使用def語句來定義函數,然後依次寫出函數名、括號、括號內的參數以及最後不能忘記的冒號,函數體需另起一行在縮進塊中編寫,最後返回值用return語句執行。看一例求絕對值的自編函數:

def f_abs(x):
if x >=0:

return x
else:
return -x

當然,如果你已經通過pycharm將f_abs保存為abstest.py文件的話,可以通過cmd在當前文件目錄下啟動Python然後直接導入函數模塊來調用f_abs函數:

C:\Users\Administrator>F:
F:\>cd pythoncode>python
>>> from abstest import f_abs
>>> f_abs(-1.0923)
-1.0923

另外我們在編寫函數時也可以對函數做參數個數和參數類型的檢查,函數也可以返回多個值,但其本質是一個tuple。

>>>>

函數的參數傳入

函數參數傳入的靈活性使得Python函數十分強大,函數參數除了必選參數之外,還包括默認參數、可變參數、命名關鍵字參數以及關鍵字參數。函數參數傳遞順序為必選參數>默認參數>可變參數>命名關鍵字參數>關鍵字參數。

必選參數:

先定義一個求平方的函數:

def power(x):
return x*x
power(-10)
100

可見求平方函數定義起來很方便,但如果我們想求x的更高次冪的話,恐怕這個函數就得改改了,我們需要兩個必選參數才能搞定:

def power(x,n):
s = 1
while

n >0:
n = n-1
s = s*x
return s
power(10,3)
1000

默認參數:

當我們重新定義power函數時,原先的只傳入一個必選參數的函數就已經失效了,這時候我們就需要默認參數來幫忙了,將參數n的值定義為默認值2:

def power(x,n=2):
s = 1
while n >0:
n = n-1
s = s*x
return s

>>> power(10)
100
>>> power(10,2)
100

從上述例子我們可以看出,默認參數的使用可以簡化函數的調用。必選參數在前,默認參數在後,當傳入多個參數時,變化大的參數放前面,變化小的參數可作為默認參數放後面,最重要的一點是,默認參數必須指向不變對象!這是設置默認參數時需要註意的。

可變參數:

我們對一組數的平方求和定義一個函數,即a2+b2+c2+...利用可變參數我們可以編寫函數:

def jisuan(*numers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum

由上面的命令可見可變參數僅僅需要在參數前加上一個*號就可完成對其定義,參數numbers接受的數據類型為一個list或者tuple。當我們已有一個list或者tuple時,我們可以直接將其當作可變參數傳入函數中去:

>>> nums = [2,3,5]
>>> jisuan(*nums)
38

關鍵字參數:

與可變參數可以傳入任意個參數不同的是,關鍵字參數可以傳入任意個含參數名的參數,這樣key-value格式顯然是以dict的數據類型傳入的。且看示例:

def player(name,team,**kw):
print('name:',name,'team:',team,'other:',kw)
player('Harden','Rockets',city = 'Houston')
name: Harden team: Rockets other: {'city':'Houston'}


顯而易見的一點是,關鍵字參數增加了函數的靈活性,除去必選參數外,用戶可通過關鍵字參數輸入任何想要的參數。和可變參數類似的是,我們也可以先定義一個dict,然後將其作為關鍵字參數傳入函數中去:

>>> info = {'city': 'Golden states'}
>>> player('Curry','Worriors',**info)
name: Curry team: Worriors other: {'city':'Golden states'}

命名關鍵字參數:

通過關鍵字參數,我們可以傳入任意不受限制的參數,但如果我們想要限制關鍵字參數的名字,可以使用命名關鍵字參數,例如只接受city和age作為關鍵字參數,定義方式如下:

def palyer(name,team,*,city,age):
print(name,team,city,age)

命名關鍵字參數需要一個*作為分隔,*後面的參數均為命名關鍵字參數,這與關鍵字參數的**大不相同。但如果在此之前函數已有可變參數的話,再定義命名關鍵字參數的話就不需要*作為分隔符了。示例如下:

def palyer(name,team,*tec,city,age):
print(name,team,tec,city,age)

需要註意的是,命名關鍵字參數必需連同參數名一起傳入函數中,否則的話Python將會報錯。

>>> player('Parker','Spurs',city = 'San Antonio',age = 32)
Parker Spurs San Antonio 32

需要說明的一點是,各類參數可以組合傳入函數當中,只是需要註意傳入的順序:必選參數>默認參數>可變參數>命名關鍵字參數>關鍵字參數。

>>>>

函數的調用

當我們定義好函數後,相應的函數調用也就十分簡單了,直接使用函數名即可完成調用。當然,並不是每個函數都需要我們去自定義,Python基礎模塊和各類庫裏面內置了大量函數,我們可直接調用,這一點和R也是類似的。看幾個Python函數的例子:

>>> abs(-0.3)
0.3
>>> max(3,0,8,3)
8
>>> int(10.24)
10

需要獲取免費學習資料及馬哥教育全部公開課視頻錄播、資料、文檔的同學,請添加QQ:595589172,添加後即可免費獲取~祝同學們學習有成!


Python函數的定義、參數傳入與函數的調用