Python函數參數的使用方法

2021-01-11 米粒教育

Pyhton函數給編寫程序帶來了便捷性,開發人員可以把程序的共用代碼,或者說是程序的通用功能封裝成函數。當需要使用函數時,只需要在代碼的相應位置調用函數即可。

在《初識Python函數編程與代碼的可復用性》一文中,我們已經了解了如何定義一個函數和調用函數。但對函數參數的傳遞沒有詳細討論,本文主要討論函數參數的傳遞。

函數中的參數起到了傳遞數據的作用,函數調用者可以通過函數參數把函數內部需要的數據從外部傳遞過去。例如下面的代碼定義了函數summation,它有一個參數number,函數需要這個參數來計算自然數的累加和。調用者調用函數時,需要傳入一個自然數進去。

在上面的代碼中,聲明summation函數語句的參數稱為形參,調用summation函數時傳入的參數稱為實參,例如在summation函數中,函數聲明語句的number是形參,後面的代碼調用summation函數傳入的自然數10、20、100是實參。這裡需要注意的是,函數聲明時的形參數量和調用函數時傳入的實參數量要一致,聲明的形參順序和傳入的實參順序也要一致。

一般說來定義多少個形參,就需要傳入多少個實參。在一些特殊情況下,函數雖然定義了形參,但在調用函數時可以不用傳入實參,這就是默認參數的作用。默認參數的意思就是給函數的形參設置一個默認值,如果在調用函數時沒有傳入實參,那麼這個默認值將會作為實參傳遞給函數。默認參數可以簡化函數的調用,調用者不需要傳入過多的實參。

給函數設置默認參數時要遵循該參數具有共性和不變屬性的規則,在特殊情況下可以用傳入的實參代替默認值。例如在一個計算銀行利息的函數中,聲明的參數有利率、本金和存款存期,在這三個參數中利率一般是不變的,它具有共性和不變屬性,可以設置為默認參數,當因特殊情況利率發生變化時,可以傳入實參來代替默認值。下面的代碼給出了如何聲明帶有默認參數的函數。

在上面的代碼中,定義了calculation函數,用於計算應付利息。該函數有三個參數,分別是principal(本金)、date(存期)、rate(利率),其中利率為默認參數,默認值是0.05(5%)。默認參數的聲明語法就是在形參名稱後面用運算符「=」給形參賦值。當函數的形參被聲明為默認參數後,調用函數時就可以省略該參數的傳入。這裡需要注意的是,被聲明為默認參數的形參需要放置在不是默認參數的形參後面。

在實際編程中,還會遇到這樣的情況:要求編寫一個函數,實現求多個自然數的平均值。這就有點難度了,求多個自然數的平均值不難,難就難在要用函數來實現,求平均值的自然數個數又不確定,如何聲明函數的形參呢?

這就要用到可變參數了,可變參數允許調用函數時傳入的參數是可變的,可以是1個實參、2個實參或者多個實參,也可以是0個實參。聲明可變參數時,只需要在形參名稱之前加「*」符號即可,調用函數時可以傳入任意個實參。

在上面的代碼中,函數average就使用了可變參數,在函數形參numbers前面加「*」符號,加上「*」符號的numbers不再是單個值,而是一個元組。當調用有可變參數的函數時,Python解釋器會把傳入的多個參數封裝到一個元組裡面,再傳遞給函數。

在形參名稱前面加一個「*」符號,可以讓形參變為一個元組使用。有時我們更希望傳入的可變參數是一個字典,字典是一個鍵值對,類似於JSON數據。Python也支持可變參數作為字典的傳入,語法就是在形參名稱前面加二個「*」符號。

假設要編寫一個輸出用戶信息的函數,用戶信息包含用戶的姓名、年齡、身高等內容,但用戶信息有的完整、有的不完整,輸出的內容不完全相同。這時我們就可以在函數中使用字典類型的可變參數。

在上面的代碼中,聲明了userinfo函數,函數的形參user是字典類型的可變參數,在函數體內部可以把uesr參數直接作為字典來使用。這裡需要注意的是,當形參為字典可變參數時,函數調用時傳入的參數必須是字典數據。

前面主要討論了Python函數參數的使用方法。Python函數支持默認參數,默認參數需要在形參名稱後面使用賦值語句賦值,默認參數不支持字典、列表等內容可變對象。另外聲明默認參數時,需要把聲明的默認參數放置在不是默認參數的形參後面。

Python也支持可變參數,可變參數分為元組類型的可變參數和字典類型的可變參數。元組類型的可變參數是在形參名稱前面加一個「*」符號,字典類型的可變參數是在形參名稱前面加兩個「*」符號。

相關焦點

  • Python使用ctypes模塊調用DLL函數之複數數組的參數傳遞
    在Python語言中,可以使用ctypes模塊調用其它如C++語言編寫的動態連結庫DLL文件中的函數,前面多篇文章中已經講了傳遞數值/指針/字符串參數、傳遞結構體參數、傳遞普通數組類型的例子,大家可以回看一下,這樣可以更好的理解本次要講的內容。
  • Python每日3題-為什麼函數名字可以當做參數用?
    [Easy] 為什麼函數名字可以當做參數用? 思考30秒再往下翻...裝飾器的返回值也是一個函數的對象,它經常用於有切面需求的場景。比如:插入日誌,性能測試,事務處理,緩存。權限的校驗等場景,有了裝飾器就可以抽離出大量的與函數功能本身無關的雷同代碼並發並繼續使用。 [Hard] 生成器,迭代器的區別? 思考30秒再往下翻...
  • Python基礎教程(一) - 函數和函數式編程
    什麼是函數函數是對程序邏輯進行結構化或過程化的一種編程方法。能將整塊代碼巧妙地隔離成易於管理的小塊,把重複的代碼放在函數中而不是進行大量的copy。前面使用過很多print()來進行列印,這是python提供的內建函數,你也可以自己創建函數,這叫做用戶自定義函數。創建函數你可以定義一個由自己想要功能的函數,用def語句來創建,標題行由def關鍵字,函數的名字,以及參數的集合(如果有的話)組成。
  • python動態添加類對象成員:變量、函數
    給類對象動態添加方法/函數注意:初學者在理解以下內容之前,需清楚python類中 self 參數的含義和作用,可自行搜索查閱:Python中self的用法!兩種新增類對象函數的方法說明:為p對象動態增加方法時,Python 不會自動將調用者自動綁定到類方法的第一個參數self(即使將第一個參數命名為 self 也沒用)。
  • python高階函數:map、filter、reduce的替代品
    什麼是高階函數?高階函數是一種將函數作為參數,或者把函數作為結果返回的函數,map函數、sorted函數就是高階函數的典型例子。map函數在小編以前的文章中做過相應的知識分享。sorted函數是python的內置函數,它的可選參數key用於提供一個函數,它可以將函數應用到各個元素上進行排序。
  • Python使用ctypes模塊調用DLL函數之C語言數組與numpy數組傳遞
    前面兩篇已經講了傳遞數值/指針/字符串參數、傳遞結構體參數的例子,大家可以回看一下,這樣可以更好的理解本次要講的內容。詳細細節請參考:python使用ctypes模塊調用DLL函數之傳遞數值、指針與字符串參數、Python使用ctypes模塊調用DLL函數之傳遞結構體參數這次講一下在Python中使用ctypes模塊調用DLL中的庫函數傳遞數組參數的情況。
  • python入門基礎之lambda匿名函數詳解
    python入門基礎之lambda匿名函數詳解剛開始學習python的時候很多人可能對於lambda函數不了解,感覺和def很混亂,下面我來介紹一下lambda函數我從一下幾個方面來介紹lambda:1、lambda簡介2、lambda與def不同之處3、lambda的使用方法1、lambda簡介先來看一段代碼示例:
  • Python零基礎入門教程,如何使用lambda、filter和map函數?
    大綱函數類型定義及特性lambda函數定義及使用filter函數定義及使用map函數定義及使用引入函數類型概念函數類型定義:python中任意一個函數都有數據類型,這種數據類型是function(函數類型)
  • Python中的函數參數
    # 必需參數# 默認參數# 關鍵字參數# 不定長參數# 必需參數:必需參數須以正確的順序傳入函數># 默認參數:調用時不傳入參數就使用默認值代替def tac(t ="默認值" ):# 調用時不傳入參數,使用默認值print("使用默認值", t)# 調用函數,不傳入參數會使用默認值
  • python的內置函數:int()轉換成整型
    在python中是利用內置函數int()來將一個對象轉換成整型。python的內置函數int的使用1.內置函數int()語法classint(x,base=10),其中x為一個字符串或數字,base來表示x是以什麼進位的數據來表示的。x數字參數可以是整數、浮點數(小數點表示和指數e表示皆可), 字符串參數僅能包含在指定進位下所涵蓋的字符,該參數可省略。
  • Python每天一分鐘:lambda表達式 (匿名函數)及用法詳解
    在 lambda 關鍵字之後、冒號左邊為參數列表,可不帶參數,也可有多個參數。若有多個參數,則參數間用逗號隔開,冒號右邊為 lambda 表達式的返回值。* y即函數定義可以使用簡化方式:當函數體只有一行代碼時,可直接把函數的代碼體放在與函數頭同一行。
  • python基礎課程 第5章 奇妙的內建函數
    今天我們來講講 python 的常用內建函數,以便於大家在日常編程過程中遇到類似的場景可以直接拿來使用,不用再重複自己了。python 內建函數(python自帶的函數) 數量加起來大概有70多個,今天我們主要講常用的一些,至於更多的內容可以在以後的基礎教程裡慢慢學到。
  • 懂Excel輕鬆入門Python數據分析包pandas(二十七):IF函數代替者
    此系列文章收錄在:數據大宇宙 > 數據處理 > E-pd轉發本文並私信我"python",即可獲得Python資料以及更多系列文章(持續更新的)經常聽別人說 Python 在數據領域有多厲害,結果學了很長時間,連數據處理都麻煩得要死。
  • 加快Python算法的四個方法(二)Numba
    4.使用基本的Numba功能(只需要@jit!)小菜一碟!為了獲得最佳的性能,numba建議在你的jit包裝器中使用參數nopython = True,但它根本不會使用Python解釋器。或者你也可以使用@njit。
  • Python學習第40課-Lambda表達式創建匿名函數
    【每天幾分鐘,從零入門python編程的世界!】之前我們學習了使用def關鍵字來創建自定義函數,這種方式創建的函數都是有函數名的,我們也可以創建沒有函數名的函數,這種函數叫做匿名函數。Python中可以使用Lambda表達式來創建匿名函數。
  • 寫Python 代碼不可不知的函數式編程技術
    嵌套函數函數還可以在其他函數內部,這就是「內部函數」。內部函數在創建輔助函數時非常有用,輔助函數即作為子模塊來支持主函數的小型可重用函數。在問題需要特定函數定義(參數類型或順序)時,我們可以使用輔助函數。
  • Python列表有什麼內置函數可以使用,怎麼使用這些函數
    那麼列表有什麼內置函數可以使用,怎麼使用這些函數。count() 方法用於統計某個元素在列表中出現的次數。pop()方法語法:list.pop(index=-1)參數:index: 可選參數,要移除列表元素的索引值,不能超過列表總長度,默認為 index=-1,刪除最後一個列表值。
  • python教程之python數學運算
    存儲數據變量#兩個變量交換值,通過第三個參數實現print('兩個變量交換值,通過第三個參數實現'); #第一種方法是通過第三個參數實現x=5;#變量賦值y=11; #變量賦值print('交換前',x,y);temp=x;x=y;y=temp;print
  • 利用python計算函數與x軸之間的面積
    用數學表達式表示出來就是:也就是求解任意一個函數的絕對值與x軸之間構成的面積,我們以函數sin(x)為例(因為函數sin(x)便於對計算結果進行檢驗),如圖所示:我們用積分的定義來計算,積分就是將函數分成無數的小段,然後對每一小段進行求和處理。
  • 「數據清洗」lambda表達式配合使用的四種函數
    標籤:數據清洗、pythonlambda表達式配合使用的四種函數一、什麼是lambda表達式基本特性使用方法filter函數map函數sorted函數reduce函數總結什麼是lambda表達式# 函數沒有輸入參數,輸出是設定的字符串lambda *args: sum(args) # 輸入是任意個數的參數,輸出是它們的和(輸入參數必須能夠進行加法運算)lambda **kwargs: 1 # 輸入是任意鍵值對參數,輸出是1使用方法lambda表達式返回的是一個函數對象,其本質上只有一種用法