Python 3.0的Keyword-Only參數(shù)就是指必須只按照關(guān)鍵字傳遞參數(shù)。
出現(xiàn)在參數(shù)列表中的*args之后的所有參數(shù)都必須在調(diào)用中使用關(guān)鍵字語法來傳遞。例如,在如下的代碼中,a可以按照名稱或位置傳遞,b會(huì)收集任何額外的位置參數(shù),而c必須只按照關(guān)鍵字傳遞:
> > > def kwonly(a,*b,c):
... print(a,b,c)
...
> > > kwonly(1,2,c=3)
1 (2,) 3
> > > kwonly(a=1,c=3)
1 () 3
> > > kwonly(1,2,3)
TypeError: kwonly() needs keyword-only argument c
我們也可以在參數(shù)列表中使用一個(gè)*字符,來表示一個(gè)函數(shù)不會(huì)接受一個(gè)變長(zhǎng)的參數(shù)列表,并且要求跟在*后面的所有參數(shù)都作為關(guān)鍵字傳遞。在下面的函數(shù)中,a可以按照位置或名稱傳遞,但b和c必須按照關(guān)鍵字傳遞:
> > > def kwonly(a,*,b,c):
... print(a,b,c)
...
> > > kwonly(1,c=3,b=2)
1 2 3
> > > kwonly(c=3,b=2,a=1)
1 2 3
> > > kwonly(1,2,3)
TypeError: kwonly() takes exactly 1 positional argument (3 given)
> > > kwonly(1)
TypeError: kwonly() needs keyword-only argument b
我們?nèi)匀豢梢詫?duì)keyword-only參數(shù)使用默認(rèn)值。在下面的代碼中,a可以按照名稱或位置傳遞,而b和c是可選的,但是如果使用的話必須按照關(guān)鍵字傳遞:
> > > def kwonly(a,*,b='spam',c='ham'):
... print(a,b,c)
...
> > > kwonly(1)
1 spam ham
> > > kwonly(1,c=3)
1 spam 3
> > > kwonly(a=1)
1 spam ham
> > > kwonly(c=3,b=2,a=1)
1 2 3
> > > kwonly(1,2)
TypeError: kwonly() takes exactly 1 positional argument (2 given)
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4308瀏覽量
62444 -
代碼
+關(guān)注
關(guān)注
30文章
4753瀏覽量
68368 -
python3
+關(guān)注
關(guān)注
0文章
18瀏覽量
3894
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論