您現在的位置是:首頁 > 籃球

有人看到*args和**kwargs就把桌子掀了

  • 由 程式設計師James 發表于 籃球
  • 2022-07-14
簡介對於大部分學程式設計的同學來說,函式的引數往往都是“一個蘿蔔一個坑”,但是今天帶大家認識一對反三觀的哥倆 —— 不定長引數(*args,**kwargs)*args老規矩,先上程式碼:defsum(*args):a =0forninargs

掀是什麼字

對於大部分學程式設計的同學來說,函式的引數往往都是“一個蘿蔔一個坑”,但是今天帶大家認識一對反三觀的哥倆 —— 不定長引數(

*args

**kwargs

*args

老規矩,先上程式碼:

def

sum(*args)

a =

0

for

n

in

args:

a+=n

return

a

寫了個求和的方法,引數是不定長引數

*args

,呼叫它下:

print(sum(

1

2

4

5

))

# 第一種呼叫方法,直接把數字寫入引數的括號中

tup = (

5

6

8

9

8

9

5

# 第二種呼叫方法,寫入一個元組

print(sum(*tup))

# 透過*tup(tup是變數名,可隨意取)傳入函式

輸出結果:

>> 12

>> 50

**kwargs

如果把

*args

理解成傳入一個元組的話,那麼可以把

**kwargs

理解成傳入一個字典。

def

register(**kwargs)

return

(kwargs)

呼叫一下

register

方法,也是有兩個方式的:

score = {

“大叔”

100

“Kevin”

90

“Jason”

95

}

print(

“第一種方式”

register(**score)

# 第一種

print(

“第二種方式”

register(**score, David=

90

, Sunhua=

90。5

# 第二種

輸出結果:

第一種方式 {

‘大叔’

: 100,

‘Kevin’

: 90,

‘Jason’

: 95}

第二種方式 {

‘大叔’

: 100,

‘Kevin’

: 90,

‘Jason’

: 95,

‘David’

: 90,

‘Sunhua’

: 90。5}

思考題

def

family(a,b,*args,**kwargs)

print(a)

print(b)

print(args)

print(kwargs)

我現在把

位置引數

不定長引數

都整合到一個函式中,如果我用下面的語句進行呼叫,那麼結果是什麼?

family(

1

2

3

4

5

,k=

8

,v=

9

知道結果的小夥伴可以把答案發到評論區。

關於掀桌子

以前我看到

*args

**kwargs

這倆兄弟一起出現,我也會有想掀桌子的衝動。相對一板一眼的關鍵字引數來說,這的確使函式程式碼可讀性、可維護性變差了不少。尤其對於習慣了

「強型別」

語言的程式設計師來說,這倆兄弟就是魔鬼!!!當然,那桌子也是“強哥”掀的~~~

有人看到*args和**kwargs就把桌子掀了

Top