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


作為計算機代碼的一種抽象方式,函數在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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM