當前位置:首頁 » 編程語言 » python設置默認值

python設置默認值

發布時間: 2024-09-05 02:05:30

1. python中定義函數時如何書寫可變參數和默認參數

參數名前面加*是可變位置參數,

加**是可變關鍵字參數;

參數名=默認值可以用來為參數指定默認值。

下面是一個例子:

#/使前面的參數成為僅僅是位置參數

def f(a=1,b=2,/,c=3,*args,**kwargs):print(a,b,c,*args,kwargs)

def f2(a=1,b=2,c=3,*args,**kwargs):print(a,b,c,*args,kwargs)

#*使後面的參數成為僅僅是關鍵字參數

def f3(a=1,b=2,*,c=3,d=4):print(a,b,c,d)

#/使前面的參數成為僅僅是位置參數

def f4(a=1,b=2,/,c=3,d=4):print(a,b,c,d)

f()

f(11,22)

#f(a=11,b=22)

f(c=666)

f(1,2,3,4,5,x=5,y=6)

f2()

f2(a=11,b=22)

f2(c=888)

f2("a","b","c",1,2,p="ok")

f3(1001,2222)

f3(a=1001)

f3(111,c=333,d=444)

f3(6,6,c=6,d=6)

#f3(6,6,6,6)

f4(1001,2222)

#f4(1001,b=2222)

f4(1001)

#f4(a=1001)

f4(111,c=333,d=444)

f4(1,2,3,4)

運行結果截圖如下:

2. 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與位置參數和默認參數混用:

超復雜混合參數混用記:

總結:

位置參數:

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

關鍵字參數:

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

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

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

3. 關於python帶默認值的參數只能放在後面的問題

第一個那個*x是*args的意思,就是任意個參數,C++里的 va_arg,...符號這種,python函數里可以有*args和**kwargs。
*args之後可以隨便放有默認值的和沒有默認值的。
因為這之後的任何東西都得用」y=1「」z=1「這種來賦值。
比如說第一個函數,def fun(*x, y=4, z),我寫fun(1,2,3,4,5),這五個數全跑到*x里了。我想給y和z賦值必須要寫fun(1,2,3,4,5,y=6,z=7)。相當於z跟有默認值的那種也差不多了。所以規定可以把z放在*x後面的任何位置,包括y=4後面,它們的位置關系已經沒有用了。
規定def fun(x=4, y) y必須放在x前,就是要保留這種位置關系,要不我寫fun(1),你說這個1是給x的還是y的?就有了歧義。所以必須要有正確的位置關系。但是*x後面所有東西都是用參數名賦值的,位置關系不起作用了,所以可以任意順序了。
要理解規定背後的原因。同理,**kwargs放在最後,也是這個原因。消除歧義性。

4. python input輸入框如何設置默認值

這個很簡單,在input後面加 「or 默認值」就行了,原理是這樣的:如果未輸入任何內容,則input將返回空字元串. python中的空字元串是False bool(「」) – >假。
按你的例子:
a=input("2+2=?") or "4"
print a

5. python函數參數的類型有幾種

5種。
1、位置參數:按照參數的順序傳遞,如果沒有傳遞足夠的參數,函數會拋出TypeError。
2、默認參數:在函數定義時賦予參數默認值,這樣在調用函數時如果沒有提供參數的值,就會使用默認值。默認參數只在函數定義時賦值一次,之後不會改變。
3、關鍵字參數:在調用函數時使用關鍵字傳遞參數值。關鍵字參數允許用戶為函數參數提供有意義的名稱,使代碼更易讀。
4、可變數量參數:在函數定義時使用「*」或「**」來接收任意數量的位置參數或關鍵字參數。
5、命名關鍵字參數:在函數定義時使用「**」來接收命名關鍵字參數。

熱點內容
win10與linux雙系統 發布:2024-11-25 07:40:05 瀏覽:657
網易我的世界4d皮膚伺服器 發布:2024-11-25 07:38:36 瀏覽:943
傳奇結義腳本 發布:2024-11-25 07:31:25 瀏覽:661
linuxpppd 發布:2024-11-25 07:29:54 瀏覽:293
海宇加密 發布:2024-11-25 07:24:03 瀏覽:801
手機通話降噪功能安卓在哪裡設置 發布:2024-11-25 07:21:03 瀏覽:117
c基礎java 發布:2024-11-25 07:20:50 瀏覽:70
罪惡都市安卓內置菜單在哪裡下載 發布:2024-11-25 07:09:51 瀏覽:706
資料庫附加資料庫 發布:2024-11-25 07:08:08 瀏覽:403
支付寶支付密碼如何修改 發布:2024-11-25 06:38:47 瀏覽:923