python函数参数定义顺序_Python函数定义-位置参数-返回值
原標題:Python函數定義-位置參數-返回值
1 函數介紹
函數在編程語言中就是完成特定功能的一個詞句組(代碼塊),這組語句可以作為一個單位使用,并且給它取一個名字。可以通過函數名在程序的不同地方多次執行(這叫函數的調用)。函數在編程語言中有基本分為:預定義函數,自定義函數。預定義函數可以直接使用,而自定義函數顧名思義需要我們自己定義函數。
在數學中的定義,這里就不介紹了。因為沒卵用。哈哈
1.1 為什么要使用函數
在編程中使用函數主要有兩個優點:
降低編程難度:通常將一個復雜的大問題分解成一系列的小問題,然后將小問題劃分成更小的問題,當問題細化為足夠簡單時,我們就可以分而治之,各個小問題解決了,大問題就迎刃而解了。
代碼重用:避免重復勞作,提供效率
代碼更加簡潔美觀,可讀性增加
1.2 Python中的函數
在Python中,函數由若干語句組成代碼塊、函數名稱、參數列表構成,它是組織代碼的最小單元,使用函數可以完成一定的功能,在Python中函數主要分為三類:內置函數、第三方函數庫、自定義函數。常用的內置函數在前面已經介紹,第三方函數庫需要先引入模塊,通過模塊調用,在模塊學習中進行介紹,這里主要說的是如何自定義一個函數。
2 函數的基本使用
在Python中,定義一個函數要使用def語句,依次寫出函數名、括號、括號中的參數和冒號:,然后,在縮進塊中編寫函數體,函數的返回值用return語句返回。下面是一個函數的基本結構
注意:
函數名就是標識符,命名要求一樣
語句塊必須縮進,約定4個空格
Python的函數沒有return語句,隱式會返回一個None
定義中的參數列表成為形式函數,只是一種符號表達式(標識符),簡稱形參
我們以自定義一個求絕對值的函數為例:
上面只是一個函數的定義,j具體來看一下各個部分的解釋:
函數名字叫做abs,接受1個形式參數x。
return x:表示要返回的值是x,函數可以無返回值。
函數是一個可調用對象,函數名加括號就表示調用。
和變量是的使用方式相同,在使用函數時,需要預先進行定義。
直接打印函數名,不會觸發函數的執行,反而會打印函數的內存地址。
我們自定義的函數abs,由于與內置函數重名,那么將會覆蓋掉內置函數,所以請謹慎命名。
函數體內部的語句在執行時,一旦執行到return時,函數就執行完畢,并將結果返回。因此,函數內部通過條件判斷和循環可以實現非常復雜的邏輯。如果沒有return語句,函數執行完畢后會隱士的返回None。如果我們確實要return None可以簡寫為return,或者不寫return語句(會讓人看不懂,建議只寫return)。
調用函數,那么只需要使用函數名加括號,就能執行,但如果函數定義了參數,那么必須在執行的時候傳遞參數給函授,否則會報異常!關于調用我們還需要了解:
函數定義,只是聲明了一個函數,它不會被執行,調用時才會執行
調用方式就是函數名后加上小括號,如果有必要需要在括號內寫上參數
調用時寫的參數是實際參數,是實實在在傳入的值,簡稱實參
函數是可調用對象,可以使用callable()進行判斷
3 函數的參數
定義函數的時候,括號中指定的就是函數的參數(形式參數),當我們調用函數時,需要將數據進行傳遞,這種傳遞參數的方式就叫做傳參,嚴格來說函數只可以使用兩種方式:位置傳參和關鍵字傳參。
位置傳參:按照參數定義順序傳入實參
關鍵字傳參:使用形參的名字來傳入實參的方式
需要注意的時:參數傳遞時如果使用了形參的名字,那么傳入參數的順序就可以和定義的順序不同,當位置傳參和關鍵字傳參混用時,位置傳參必須放在關鍵字傳參前面傳入。
3.1 參數的默認值
在定義形式參數時,為參數指定對應的值,就叫做參數的默認值,當定義了參數的默認值以后,我們傳參時可以選擇傳遞該參數的值,也可以選擇不傳遞,當不傳遞此參數的值時,該參數就使用指定的默認值,否則將會使用傳遞的值。
參數默認值也屬于位置參數,只不過是給位置參數定義了默認值。
當定義參數的默認值時,注意默認值參數必須要放在位置參數的右邊
使用默認值參數的好處是:
參數的默認值可以在未傳入足夠的實參的時候,對沒有給定的參數賦值為默認值。
參數非常多的時候,并不需要用戶每次都輸入所有的參數,簡化函數調用。
3.2 可變參數
可變參數顧名思義表示參數的數量是可變的,并且可以使用一個形參匹配任意個實參。針對傳遞參數方式的不同又分為可變位置傳參和可變關鍵字傳參。
3.2.1 可變位置傳參
在形參前使用*號,表示該形參是可變參數,可以接受多個實參,在函數內部,可變參數會封裝成元祖(即便是沒有傳遞)
在函數定義時,一般的規范是使用 *args, 表示收集多個位置傳參。
3.2.2 可變關鍵字傳參
在形參前使用**號,表示該形參是可變關鍵字參數,可以接受多個關鍵字參數,在函數內部,可變關鍵字參數會封裝成字典(即便是沒有傳遞)
3.2.3 可變參數混合使用
前面說的各種參數是可以混合使用的,當混合使用時遵循一定的順序,簡單總結一下,按照從左至右的順序來說:位置參數,默認值參數,可變位置參數,可變關鍵字參數:def function(位置參數,默認值參數,可變位置參數,可變關鍵字參數)。
無論如何,順序不能顛倒。
3.2.4 可變參數小結
針對可變參數以及不同的混用方式可以有如下結論:
分為位置可變參數和關鍵字可變參數
位置可變參數在形參前使用一個星號*
關鍵字可變參數在形參前使用兩個星號**
可變位置參數和可變關鍵字參數都可以收集若干個實參,可變位置參數收集形成一個tuple,可變關鍵字參數收集形成一個dict
混合使用參數的時候,在定義階段要遵循如下順序:位置參數,默認值參數,可變位置參數,可變關鍵字參數
當位置傳參和關鍵字傳參同時使用時,不可以重復賦值!,這一點使用的時候很重要。
3.3 keyword-only參數*
Python3的函數參數中,新增了keyword-only參數,什么叫keyword-only參數?我們說當在一個星號參數(可變位置參數)后,出現的普通參數,我們稱它為keyword-only參數,因為多余的位置參數都會被*args收集,只能通過keyword的方式對這些形參進行賦值,所以它們只能使用'關鍵字傳參'。
特殊形式:
這里*表示不接受位置傳參,只能使用關鍵字對參數進行賦值
注意:使用了keyword-only參數,那么在定義形參的時的順序就有所改變了,它們是:位置參數,默認值參數,可變位置參數,keyword-only參數,可變關鍵字參數
3.4 參數解構
前面我們說過Python的封裝與結構,這里的參數也可以利用這種思想進行結構,現有如下函數:
將t在傳遞參數時結構為10,20,作為位置傳參傳遞給add函數
將d在傳遞參數時結構為x=100,y=200,作為關鍵字傳參傳遞給函數
這種方法在后面函數的調用過程中非常常用
現在再來回頭看一下,什么時參數解構?
給函數提供實參的時候,可以在集合類型前使用*或者**,把集合類型的結構解開,提取出所以的元素作為函數的實參。
非字典類型使用*解構成位置參數
字典型使用**解構成關鍵字參數
提取出來的元素數目要和參數的要求匹配,也要和參數的類型匹配,否則請使用*args,**kwargs
4 函數的返回值
我們通常編寫函數除了代碼可以復用,更多的時候需要的是知道函數的運算結果,那么函數把運算的結果返回給我們,這個結果就叫作做函數的返回值。使用return關鍵字進行返回。
總結:
Python函數使用return語句返回"返回值"
所有函數都有返回值,如果沒有return語句,隱式調用return None
return語句并不一定是函數的語句塊的最后一條語句
一個函數可以存在多個return語句,但是只有一條可以被執行,如果沒有一條return語句被執行,隱式調用return None
return None可以簡寫為return
函數執行到return就會返回,所以return后面的語句永遠不會被執行
return可以理解為,結束當前函數計算,返回值!
多個返回值會被包裝成一個tuple進行返回,所以函數永遠只能返回一個數據。返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的python函数参数定义顺序_Python函数定义-位置参数-返回值的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬取小说内容_使用pytho
- 下一篇: python全局名称空间_python之