免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

python的位置函數 python中如何定位一個函數

Python的函數和參數

parameter 是函數定義的參數形式

在白銀等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供網站建設、成都做網站 網站設計制作按需策劃,公司網站建設,企業網站建設,高端網站設計,全網整合營銷推廣,成都外貿網站建設公司,白銀網站建設費用合理。

argument 是函數調用時傳入的參數實體。

對于函數調用的傳參模式,一般有兩種:

此外,

也是關鍵字傳參

python的函數參數定義一般來說有五種: 位置和關鍵字參數混合 , 僅位置參數 , 僅關鍵字參數 , 可變位置參數 , 可變關鍵字參數 。其中僅位置參數的方式僅僅是一個概念,python語法中暫時沒有這樣的設計。

通常我們見到的函數是位置和關鍵字混合的方式。

既可以用關鍵字又可以用位置調用

這種方式的定義只能使用關鍵字傳參的模式

f(*some_list) 與 f(arg1, arg2, ...) (其中some_list = [arg1, arg2, ...])是等價的

網絡模塊request的request方法的設計

多數的可選參數被設計成可變關鍵字參數

有多種方法能夠為函數定義輸出:

非常晦澀

如果使用可變對象作為函數的默認參數,會導致默認參數在所有的函數調用中被共享。

例子1:

addItem方法的data設計了一個默認參數,使用不當會造成默認參數被共享。

python里面,函數的默認參數被存在__default__屬性中,這是一個元組類型

例子2:

在例子1中,默認參數是一個列表,它是mutable的數據類型,當它寫進 __defauts__屬性中時,函數addItem的操作并不會改變它的id,相當于 __defauts__只是保存了data的引用,對于它的內存數據并不關心,每次調用addItem,都可以修改 addItem.__defauts__中的數據,它是一個共享數據。

如果默認參數是一個imutable類型,情況將會不一樣,你無法改變默認參數第一次存入的值。

例子1中,連續調用addItem('world') 的結果會是

而不是期望的

python 函數參數類型

python 的函數參數類型分為4種:

1.位置參數:調用函數時根據函數定義的參數位置來傳遞參數,位置參數也可以叫做必要參數,函數調用時必須要傳的參數。

當參數滿足函數必要參數傳參的條件,函數能夠正常執行:

add(1,2) #兩個參數的順序必須一一對應,且少一個參數都不可以

當我們運行上面的程序,輸出:

當函數需要兩個必要參數,但是調用函數只給了一個參數時,程序會拋出異常

add(1)

當我們運行上面的程序,輸出:

當函數需要兩個必要參數,但是調用函數只給了三個參數時,程序會拋出異常

add(1,2,3)

當我們運行上面的程序,輸出

2.關鍵字參數:用于函數調用,通過“鍵-值”形式加以指定。可以讓函數更加清晰、容易使用,同時也清除了參數的順序需求。

add(1,2) # 這種方式傳參,必須按順序傳參:x對應1,y對應:2

add(y=2,x=1) #以關健字方式傳入參數(可以不按順序)

正確的調用方式

add(x=1, y=2)

add(y=2, x=1)

add(1, y=2)

以上調用方式都是允許的,能夠正常執行

錯誤的調用方式

add(x=1, 2)

add(y=2, 1)

以上調用都會拋出SyntaxError 異常

上面例子可以看出:有位置參數時,位置參數必須在關鍵字參數的前面,但關鍵字參數之間不存在先后順序的

3.默認參數:用于定義函數,為參數提供默認值,調用函數時可傳可不傳該默認參數的值,所有位置參數必須出現在默認參數前,包括函數定義和調用,有多個默認參數時,調用的時候,既可以按順序提供默認參數,也可以不按順序提供部分默認參數。當不按順序提供部分默認參數時,需要把參數名寫上

默認參數的函數定義

上面示例第一個是正確的定義位置參數的方式,第二個是錯誤的,因為位置參數在前,默認參數在后

def add1(x=1,y) 的定義會拋出如下異常

默認參數的函數調用

注意:定義默認參數默認參數最好不要定義為可變對象,容易掉坑

不可變對象:該對象所指向的內存中的值不能被改變,int,string,float,tuple

可變對象,該對象所指向的內存中的值可以被改變,dict,list

這里只要理解一下這個概念就行或者自行百度,后續會寫相關的專題文章講解

舉一個簡單示例

4.可變參數區別:定義函數時,有時候我們不確定調用的時候會多少個參數,j就可以使用可變參數

可變參數主要有兩類:

*args: (positional argument) 允許任意數量的可選位置參數(參數),將被分配給一個元組, 參數名前帶*,args只是約定俗成的變量名,可以替換其他名稱

**kwargs:(keyword argument) 允許任意數量的可選關鍵字參數,,將被分配給一個字典,參數名前帶**,kwargs只是約定俗成的變量名,可以替換其他名稱

*args 的用法

args 是用來傳遞一個非鍵值對的可變數量的參數列表給函數

語法是使用 符號的數量可變的參數; 按照慣例,通常是使用arg這個單詞,args相當于一個變量名,可以自己定義的

在上面的程序中,我們使用* args作為一個可變長度參數列表傳遞給add()函數。 在函數中,我們有一個循環實現傳遞的參數計算和輸出結果。

還可以直接傳遞列表或者數組的方式傳遞參數,以數組或者列表方式傳遞參數名前面加(*) 號

理解* * kwargs

**kwargs 允許你將不定長度的鍵值對, 作為參數傳遞給函數,這些關鍵字參數在函數內部自動組裝為一個dict

下篇詳細講解 *args, **kwargs 的參數傳遞和使用敬請關注

Python的位置參數、默認參數、關鍵字參數、可變參數區別

對于python函數參數,對于初學者可能就是進入了迷宮,盡管我也是初學者,簡單總結一下。

說參數之前,先講一下兩個packing(包裹)和unpacking(解包裹):

輸出:

我總結不了這個概念,只能幫大家到這了

一、位置參數和關鍵字參數:

調用函數時根據函數定義的參數位置來傳遞參數。

注意:

有位置參數時,位置參數必須在關鍵字參數的前面,但關鍵字參數之間不存在先后順序的

二、默認參數:

用于定義函數,為參數提供默認值,調用函數時可傳可不傳該默認參數的值(注意:所有位置參數必須出現在默認參數前,包括函數定義和調用)

三、可變參數:

定義函數時,有時候我們不確定調用的時候會傳遞多少個參數(不傳參也可以)。此時,可用包裹(packing)位置參數,或者包裹關鍵字參數,來進行參數傳遞,會顯得非常方便。

1、包裹位置傳遞

我們傳進的所有參數都會被args變量收集,它會根據傳進參數的位置合并為一個元組(tuple),args是元組類型,這就是包位置傳遞。

2、包裹關鍵字傳遞

kargs是一個字典(dict),收集所有關鍵字參數

四、解包裹參數:

*args 和 **kargs ,也可以在函數調用的時候使用,稱之為解包(unpacking)

1、在傳遞元組時,讓元組的每一個元素對應一個位置參數

2、在傳遞詞典字典時,讓詞典的每個鍵值對作為一個關鍵字參數傳遞給函數

五、位置參數、默認參數、可變參數的混合使用

1、基本原則是:先位置參數,默認參數,包裹位置,包裹關鍵字(定義和調用都應遵循)

2、Python中 *args 和 **kwargs 的區別

先看個demo:

輸出結果:

分析一下:可以看到,這兩個是[Python]中的可變參數。 *args 表示任何多個無名參數,它是一個tuple; **kwargs 表示關鍵字參數,它是一個dict。并且同時使用 *args 和 **kwargs 時,必須 *args 參數列要在 **kwargs 前,否則會報語法錯誤!!!

還有個小應用場景:創建字典

其實python中就帶有dict類,使用dict(a=1,b=2,c=3)即可創建一個字典了。

*args:

重點在*,后面的args相當于一個變量名,可以自己定義的。它的本質就是將標準調用剩下的值集中轉變為元組。

從形參的角度:

從實參的角度:

從不同角度看**kwargs:

**kwargs與位置參數和默認參數混用:

超復雜混合參數混用記:

總結:

位置參數:

調用函數時所傳參數的位置必須與定義函數時參數的位置相同

關鍵字參數:

使用關鍵字參數會指定參數值賦給哪個形參,調用時所傳參數的位置可以任意

*位置參數:可接受任意數量的位置參數(元組);只能作為最后一個位置參數出現,其后參數均為關鍵字參數

**關鍵字參數:可接受任意數量的關鍵字參數(字典);只能作為最后一個參數出現

當前文章:python的位置函數 python中如何定位一個函數
轉載源于:http://m.newbst.com/article6/dogppig.html

成都網站建設公司_創新互聯,為您提供標簽優化定制開發用戶體驗小程序開發網站改版App設計

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

商城網站建設