Python 3.0的Keyword-Only參數(shù)就是指必須只按照關(guān)鍵字傳遞參數(shù)。
出現(xiàn)在參數(shù)列表中的*args之后的所有參數(shù)都必須在調(diào)用中使用關(guān)鍵字語法來傳遞。例如,在如下的代碼中,a可以按照名稱或位置傳遞,b會收集任何額外的位置參數(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ù)列表中使用一個*字符,來表示一個函數(shù)不會接受一個變長的參數(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)匀豢梢詫eyword-only參數(shù)使用默認值。在下面的代碼中,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文章
4262瀏覽量
62237 -
代碼
+關(guān)注
關(guān)注
30文章
4697瀏覽量
68099 -
python3
+關(guān)注
關(guān)注
0文章
18瀏覽量
3886
發(fā)布評論請先 登錄
相關(guān)推薦
評論