日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

2019.5.8_此书真乃宝书也_从定位参数到仅限关键字参数

發(fā)布時(shí)間:2023/12/9 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2019.5.8_此书真乃宝书也_从定位参数到仅限关键字参数 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

《摘自流暢的Python》 此書真乃寶書也,雖說(shuō)還是有點(diǎn)兒沒(méi)懂


從定位參數(shù)到僅限關(guān)鍵字參數(shù)

Python最好的特性之一是提供了極為靈活的參數(shù)處理機(jī)制,而且Python3進(jìn)一步提供了僅限關(guān)鍵字參數(shù)(keyword-only argument)。與之密切相關(guān)的是,調(diào)用函數(shù)時(shí)使用*和**“展開”可迭代對(duì)象,映射到單個(gè)參數(shù)。下面實(shí)例中代碼展示這些特性,實(shí)際使用在第二個(gè)例子中。

[例5-11] tag函數(shù)用于生成HTML標(biāo)簽,使用名為cls的關(guān)鍵字參數(shù)傳入“class”屬性,這是一種變通方法,因?yàn)椤癱lass”是Python的關(guān)鍵字:

def tag(name, *content, cls=None, **attrs):"""生成一個(gè)或多個(gè)HTML標(biāo)簽"""if cls is not None:attrs['class'] = clsif attrs:attr_str = ''.join('%s="%s"' % (attr, value)for attr, valuein sorted(attrs.items()))else:attr_str = ''if content:return '\n'.join('<%s%s>%s</%s>' % (name, attr_str, c, name) for c in content)else:return '<%s%s />' % (name, attr_str) 復(fù)制代碼

tag 函數(shù)的調(diào)用方式很多,例子如下:

>>> tag('br') # 傳入單個(gè)參數(shù),生成一個(gè)指定名稱的空標(biāo)簽 '<br />'>>> tag('p', 'hello') # 第一個(gè)參數(shù)后面的任意個(gè)參數(shù)會(huì)被*content捕獲,存到一個(gè)數(shù)組 '<p>hello</p>'>>> print(tag('p', 'hello', 'world')) <p>hello</p> <p>world</p>>>> tag('p', 'hello', id=33) '<p id=33>hello</p>' >>> # tag函數(shù)簽名中沒(méi)有明確指定名稱的關(guān)鍵字參數(shù)會(huì)被**attrs捕獲,存入字典>>> print(tag('p', 'hello', 'world', cls='sidebar')) # cls參數(shù)只能作為關(guān)鍵字參數(shù)傳入 <p class='sidebar'>hello</p> <p class='sidebar'>world</p>>>> tag(content='testing', name='img') # 調(diào)用tag函數(shù),即便第一個(gè)定位參數(shù)也能作為關(guān)鍵字參數(shù)傳入 '<img content="testing", name="img">'>>> # 在 my_tag 前面加上**, 字典中的所有元素作為單個(gè)參數(shù)傳入, >>> # 同名鍵會(huì)綁定到對(duì)應(yīng)的參數(shù)具體參數(shù)上,其余的則被**attrs 捕獲 >>> my_tag = {'name':'img', 'title':'Sunset Boulevard', ... 'src':'sunset.jpg', 'cls':'framed'} >>> tag(**my_tag) '<img class="framed" src="sunset.jpg", title="Sunset Boulevard" />' 復(fù)制代碼

僅限關(guān)鍵字參數(shù)是Python3新增的特性,在上例中,cls參數(shù)只能通過(guò)關(guān)鍵字參數(shù)指定,它一定不會(huì)捕獲未命名的定位參數(shù)。定義函數(shù)時(shí)若想指定僅限關(guān)鍵字參數(shù),要把它們放到前面*的參數(shù)后面。如果不想支持?jǐn)?shù)量不定的定位參數(shù),但是想支持僅限關(guān)鍵字參數(shù),在簽名后面放一個(gè)*,如下所示:

>>> def f(a, *, b): ... return a, b >>> f(1, b=2) (1, 2) 復(fù)制代碼

注意,僅限關(guān)鍵字參數(shù)不一定要有默認(rèn)值,可以像上例中的b一樣,強(qiáng)制必須傳入實(shí)參。

接下來(lái)說(shuō)明函數(shù)參數(shù)的內(nèi)省,以一個(gè)Web框架中的實(shí)例為引子,接著討論內(nèi)省。

總結(jié)

以上是生活随笔為你收集整理的2019.5.8_此书真乃宝书也_从定位参数到仅限关键字参数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。