方法引數 預設值 Python引數的預設值陷阱!

2021-10-11 23:21:39 字數 1522 閱讀 1086

今日分享

引數的預設值陷阱

下面定義的函式f,其引數d是乙個預設引數,且為字典型別:

def f(a,d={}):

print(f'a: ')

print(f'd: ')

# do some process

return d

最後返回字典d,下面呼叫函式f:

ret_dict = f(1) # 第二個引數d使用預設值

ret_dict['b'] = 2

ret_dict['c'] = 3

再次使用函式f

f(1)

儘管第二個引數為預設引數,按照預期它應該返回乙個空字典,但結果卻是如下:

a: 1

d:

應該將它們的預設值設定為none

def f(a,d=none):

if d is none:

d = {} ### 初始化為空字典

print(f'a: ')

print(f'd: ')

# do some process

return d

ret_dict = f(1) # 第二個引數d使用預設值

### 結果:

### a: 1

### d: {}

再次呼叫:

ret_dict['b'] = 2

ret_dict['c'] = 3

f(1)

### 結果:

### a: 1

### d: {}

此時符合我們的預期!

近期小例子:chain串聯多個迭代物件;機器學習中會涉及到的隨機選擇樣本;使用namedtuple的小例子; pkuseg 做分詞,超級nice~; 寫乙個裝飾器:統計異常發生次數和時間;物件可被呼叫的實現方法;求任意維度兩點間距離; 兩種合併字典的方法對比; 計算和聚合同時進行; groupby 分組; plotly畫柱狀圖+折線圖;

python小例子,長按關注

後期計畫:不斷深入python小例子,新增更多基於python的小例子,不限於:pyqt製作guinumpy數值計算pandas資料分析sklearn機器學習實戰keras+tensorflow深度學習等。2.0版本預計在春節前發出來。

方法引數 預設值 引數的預設值陷阱!

今日分享 引數的預設值陷阱 下面定義的函式f,其引數d是乙個預設引數,且為字典型別 def f a,d print f a print f d do some process return d 最後返回字典d,下面呼叫函式f ret dict f 1 第二個引數d使用預設值 ret dict b 2...

函式(引數,預設值)

js定義函式引數沒有非常嚴格的要求,可以有也可以沒有,在呼叫的時候也是,引數可以有可以沒有,也可以和定義時的引數個數不一致 沒有給count傳入引數,預設為10 也可以直接在引數中給count賦值 但是特別注意的是不能給count傳入0,因為0與undefined都是false,因此count傳入的...

函式引數預設值

include 函式預設值為0 intmul int x 0 c語言編譯器會報錯,c 不會 intmain int argc,char ar 預設值不需要在定義時給出,宣告時給出即可 intmul int x 函式預設引數的規則 引數的預設值必須從右向左匹配 函式呼叫時使用了預設值,則後續引數必須使...