电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Python函數(shù)參數(shù)和注解的使用

瀏覽:2日期:2022-06-17 18:09:27
目錄四種參數(shù)僅限關(guān)鍵字參數(shù)內(nèi)省中的函數(shù)參數(shù)函數(shù)注解四種參數(shù)

Python函數(shù)func定義如下:

def func(first, *args, second='Hello World', **kwargs): print(first) print(args) print(second) print(kwargs)func('dongfanger', 'san', py='good')

運(yùn)行后會(huì)輸出:

dongfanger(’san’,)Hello World{’py’: ’good’}

它有四種參數(shù):

first是定位參數(shù),positional parameter,不可省略。 *args是可變參數(shù),arguments,存入元組。 second是默認(rèn)值參數(shù),default argument values,可以省略。 **args是關(guān)鍵字參數(shù),keyword arguments,存入字典。

func函數(shù)的調(diào)用方式有以下這些:

①傳入單個(gè)定位參數(shù)。

func('dongfanger')

dongfanger()Hello World{}

②第一個(gè)參數(shù)后的任意個(gè)參數(shù)會(huì)被*args捕獲,存入一個(gè)元組。

func('dongfanger', 'a', 'b', 'c')

dongfanger(’a’, ’b’, ’c’)Hello World{}

③沒有明確指定名稱的關(guān)鍵字參數(shù)會(huì)被**kwargs捕獲,存入一個(gè)字典。

func('dongfanger', j='1', k='2')

dongfanger()Hello World{’j’: ’1’, ’k’: ’2’}

④second只能作為關(guān)鍵字參數(shù)傳入。

func('dongfanger', second='cool')

dongfanger()cool{}

⑤定位函數(shù)也能作為關(guān)鍵字參數(shù)傳入。

func(first='san')

san()Hello World{}

⑥字典前加上**,其所有元素作為單個(gè)參數(shù)傳入,同名鍵會(huì)綁定到對(duì)應(yīng)具名參數(shù)上,余下的被**args捕獲。

my_dict = {'first': 'dongfanger', 'location': 'cd', 'second': 'cool', 'age': 'secret'}func(**my_dict)

dongfanger()cool{’location’: ’cd’, ’age’: ’secret’}

除了這四種參數(shù),還有一種Python3新增加的僅限關(guān)鍵字參數(shù)。

僅限關(guān)鍵字參數(shù)

僅限關(guān)鍵字參數(shù)(keyword-only argument)是Python3的新特性,func函數(shù)的second參數(shù)就是僅限關(guān)鍵字參數(shù),“僅限”的意思是說,只能通過關(guān)鍵字參數(shù)指定,它一定不會(huì)捕獲未命名的定位參數(shù)。

假如把參數(shù)位置調(diào)整一下定義another_func函數(shù):

def another_func(first, another_second='Hello World', *args, **kwargs): print(first) print(another_second) print(args) print(kwargs)another_func('dongfanger', 'a', 'b', 'c')

輸出會(huì)變成:

dongfangera # 注意這里(’b’, ’c’){}

another_second不是僅限關(guān)鍵字參數(shù),而只是默認(rèn)值參數(shù),因?yàn)樗东@到了定位參數(shù)。

由此得知,定義僅限關(guān)鍵字參數(shù),必須把它放到*args參數(shù)后面,就像func函數(shù)一樣,反例是another_func函數(shù)。

還有第二個(gè)方法定義僅限關(guān)鍵字參數(shù),在簽名中放一個(gè)*:

>>> def f(a, *, b): # b是僅限關(guān)鍵字參數(shù)... return a, b...>>> f(1, b=2) # 只能傳關(guān)鍵字參數(shù)(1, 2)>>> f(1, 2) # 不能傳定位參數(shù)Traceback (most recent call last): File '<input>', line 1, in <module>TypeError: f() takes 1 positional argument but 2 were given>>> f(1, 2, 3) # 不能傳定位參數(shù)Traceback (most recent call last): File '<input>', line 1, in <module>TypeError: f() takes 1 positional argument but 3 were given

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

內(nèi)省中的函數(shù)參數(shù)

函數(shù)內(nèi)省的意思是說,當(dāng)你拿到一個(gè)“函數(shù)對(duì)象”的時(shí)候,你可以繼續(xù)知道,它的名字,參數(shù)定義等信息。這些信息可以通過函數(shù)對(duì)象的屬性(一些雙下劃線的魔法方法)得到。

對(duì)于func函數(shù):

def func(first, *args, second='Hello World', **kwargs): print(first) print(second) print(args) print(kwargs)

和another_func函數(shù):

def another_func(first, another_second='Hello World', *args, **kwargs): print(first) print(another_second) print(args) print(kwargs)

【__defaults__屬性】

元組,保存著定位參數(shù)和關(guān)鍵字參數(shù)的默認(rèn)值。

print(func.__defaults__) # Noneprint(another_func.__defaults__) # (’Hello World’,)

【__kwdefaults__屬性】

字典,保存僅限關(guān)鍵字參數(shù)。

print(func.__kwdefaults__) # {’second’: ’Hello World’}print(another_func.__kwdefaults__) # None

【__code__屬性】

code對(duì)象引用,code對(duì)象自身有很多屬性,其中包括參數(shù)名稱。

print(func.__code__.co_varnames) # (’first’, ’second’, ’args’, ’kwargs’)print(another_func.__code__.co_varnames) # (’first’, ’another_second’, ’args’, ’kwargs’)

另外還可以使用inspect庫(kù)的signature方法來查看內(nèi)省中的函數(shù)參數(shù):

from inspect import signatureprint(signature(func)) # (first, *args, second=’Hello World’, **kwargs)

框架和IDE等工具可以使用這些信息驗(yàn)證代碼。

函數(shù)注解

如果刷過力扣算法題,那么對(duì)函數(shù)注解就不會(huì)陌生。比如:

def clip(text:str, max_len:’int > 0’=80) -> str: pass

參數(shù):后面是注解表達(dá)式,可以用來注解參數(shù)類型和約束。如果參數(shù)有默認(rèn)值,注解放在參數(shù)名和=號(hào)之間。

可以在函數(shù)末尾的)和:之間添加->和注解表達(dá)式,來對(duì)返回值添加注解。

注解表達(dá)式可以是任何類型,最常用的類型是類(如str或int)和字符串(如’int > 0’)。

函數(shù)注解只是個(gè)注解,Python對(duì)注解所做的唯一的事情是,把它們存入函數(shù)的__annotations__屬性中:

print(clip.__annotations__)#{’text’: <class ’str’>, ’max_len’: ’int > 0’, ’return’: <class ’str’>}

Python不做檢查,不做強(qiáng)制,不做驗(yàn)證,什么操作都不做!注解只是元數(shù)據(jù),可以供框架和IDE等工具使用。

以上就是Python函數(shù)參數(shù)和注解的使用的詳細(xì)內(nèi)容,更多關(guān)于Python函數(shù)參數(shù)和注解的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 江苏南京多语种翻译-专业翻译公司报价-正规商务翻译机构-南京华彦翻译服务有限公司 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 集装箱标准养护室-集装箱移动式养护室-广州璟业试验仪器有限公司 | 专业的新乡振动筛厂家-振动筛品质保障-环保振动筛价格—新乡市德科筛分机械有限公司 | 济南ISO9000认证咨询代理公司,ISO9001认证,CMA实验室认证,ISO/TS16949认证,服务体系认证,资产管理体系认证,SC食品生产许可证- 济南创远企业管理咨询有限公司 郑州电线电缆厂家-防火|低压|低烟无卤电缆-河南明星电缆 | 网站建设-高端品牌网站设计制作一站式定制_杭州APP/微信小程序开发运营-鼎易科技 | 光谱仪_积分球_分布光度计_灯具检测生产厂家_杭州松朗光电【官网】 | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | 西门子气候补偿器,锅炉气候补偿器-陕西沃信机电工程有限公司 | 挤出机_橡胶挤出机_塑料挤出机_胶片冷却机-河北伟源橡塑设备有限公司 | 玉米加工设备,玉米深加工机械,玉米糁加工设备.玉米脱皮制糁机 华豫万通粮机 | 药品/药物稳定性试验考察箱-埃里森仪器设备(上海)有限公司 | 武汉刮刮奖_刮刮卡印刷厂_为企业提供门票印刷_武汉合格证印刷_现金劵代金券印刷制作 - 武汉泽雅印刷有限公司 | 干粉砂浆设备-干粉砂浆生产线-干混-石膏-保温砂浆设备生产线-腻子粉设备厂家-国恒机械 | 北京网站建设公司_北京网站制作公司_北京网站设计公司-北京爱品特网站建站公司 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 齿辊分级破碎机,高低压压球机,立式双动力磨粉机-郑州长城冶金设备有限公司 | 合金ICP光谱仪(磁性材料,工业废水)-百科 | 电子天平-华志电子天平厂家| 重庆网站建设,重庆网站设计,重庆网站制作,重庆seo,重庆做网站,重庆seo,重庆公众号运营,重庆小程序开发 | 活性氧化铝|无烟煤滤料|活性氧化铝厂家|锰砂滤料厂家-河南新泰净水材料有限公司 | 上海璟文空运首页_一级航空货运代理公司_机场快递当日达 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 三价铬_环保铬_环保电镀_东莞共盈新材料贸易有限公司 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 数控走心机-双主轴走心机厂家-南京建克 | 锂离子电池厂家-山东中信迪生电源 | 标准品网_标准品信息网_【中检计量】 | 活性炭厂家-蜂窝活性炭-粉状/柱状/果壳/椰壳活性炭-大千净化-活性炭 | 消防泵-XBD单级卧式/立式消防泵-上海塑泉泵阀(集团)有限公司 | PCB接线端子_栅板式端子_线路板连接器_端子排生产厂家-置恒电气 喷码机,激光喷码打码机,鸡蛋打码机,手持打码机,自动喷码机,一物一码防伪溯源-恒欣瑞达有限公司 假肢-假肢价格-假肢厂家-河南假肢-郑州市力康假肢矫形器有限公司 | 打孔器,打孔钳厂家【温州新星德牌五金工具】 | 防爆暖风机_防爆电暖器_防爆电暖风机_防爆电热油汀_南阳市中通智能科技集团有限公司 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 武汉高温老化房,恒温恒湿试验箱,冷热冲击试验箱-武汉安德信检测设备有限公司 | 东莞市天进机械有限公司-钉箱机-粘箱机-糊箱机-打钉机认准东莞天进机械-厂家直供更放心! | 拉力测试机|材料拉伸试验机|电子拉力机价格|万能试验机厂家|苏州皖仪实验仪器有限公司 | 庭院灯_太阳能景观灯_草坪灯厂家_仿古壁灯-重庆恒投科技 | 汽车水泵_汽车水泵厂家-瑞安市骏迪汽车配件有限公司 | 农业仪器网 - 中国自动化农业仪器信息交流平台 |