日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python函数参数定义顺序_Python函数定义-位置参数-返回值

發布時間:2024/1/23 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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函数定义-位置参数-返回值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。