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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python学习札记(十三) Function3 函数参数二

發布時間:2023/12/20 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python学习札记(十三) Function3 函数参数二 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考:函數參數

Note

A.關鍵字參數:

1.關鍵字參數:**kw

可變參數允許你傳入0個或任意個參數,這些可變參數在函數調用時自動組裝為一個tuple。而關鍵字參數允許你傳入0個或任意個含參數名的參數,這些關鍵字參數在函數內部自動組裝為一個dict。

2.支持只傳入必選參數;也可以傳入任意數目的可選參數,如下例。

eg.

#!/usr/bin/env python3def my_func(name, age, **kw) :print('name:', name, 'age:', age, 'else:', kw)

test

>>> from function3 import my_func>>> my_func('Chen', 20) name: Chen age: 20 else: {}>>> my_func('Chen', 20, prof='Student') name: Chen age: 20 else: {'prof': 'Student'}>>> my_func('Chen', 20, prof='Student', city='FuZhou') name: Chen age: 20 else: {'prof': 'Student', 'city': 'FuZhou'}

3.關鍵字參數的作用:”試想你正在做一個用戶注冊的功能,除了用戶名和年齡是必填項外,其他都是可選項,利用關鍵字參數來定義這個函數就能滿足注冊的需求。“

4.當然,也可以選擇在傳入參數的時候直接傳入一個dict的內容。這里容易出錯,我就翻車了。

eg.

>>> dic = {'prof' : 'Student', 'city' : 'FuZhou'} >>> my_func('Chen', 20, dic['prof'], dic['city']) Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: my_func() takes 2 positional arguments but 4 were given>>> my_func('Chen', 20, dic) Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: my_func() takes 2 positional arguments but 3 were given

第一句錯誤的原因,是因為傳入dic['prof']相當于傳入'Student',即一個字符串,這很明顯與函數定義的參數不符;第二句同上,只不過由傳入字符串變成了傳入一個dict。

正確的方法應該是value_name=dict[key]。

eg.

>>> my_func('Chen', 20, prof=dic['prof']) name: Chen age: 20 else: {'prof': 'Student'}>>> my_func('Chen', 20, prof=dic['prof'], city=dic['city']) name: Chen age: 20 else: {'prof': 'Student', 'city': 'FuZhou'}

5.如果想直接傳入dict,方法也很簡單,加上兩個星號*:

剛才的錯誤:

>>> my_func('Chen', 20, dic) Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: my_func() takes 2 positional arguments but 3 were given

修正:

>>> my_func('Chen', 20, **dic) name: Chen age: 20 else: {'prof': 'Student', 'city': 'FuZhou'}

**dic表示把dic這個dict的所有key-value用關鍵字參數傳入到函數的**kw參數,kw將獲得一個dict,注意kw獲得的dict是dic的一份拷貝,對kw的改動不會影響到函數外的dic。

B.命名關鍵字參數

1.定義了關鍵字參數的函數允許用戶傳入多個關鍵字key-value值,如果我們想要在函數里面查看一個key是否在傳入的dict中,可以通過if···in···的方法查看。

eg.

#!/usr/bin/env python3def my_func(name, age, **kw) :if 'prof' in kw : # Hint: 'prof' => ''print('prof in')if 'city' in kw :print('city in')print('name:', name, 'age:', age, 'else:', kw)

output

>>> from function3 import my_func >>> dic = {'prof' : 'Student', 'city' : 'FuZhou'} >>> my_func('Chen', 20, **dic) prof in city in name: Chen age: 20 else: {'city': 'FuZhou', 'prof': 'Student'} >>>

2.如果要限制關鍵字參數的名字,就可以用命名關鍵字參數,例如,只接收city和prof作為關鍵字參數。

方法:

my_func(name, age, *, prof, city)

用*作為分隔符,指定傳入的關鍵字參數key必須是prof和city。

使用命名關鍵字參數時,要特別注意,如果沒有可變參數,就必須加一個*作為特殊分隔符。如果缺少*,Python解釋器將無法識別位置參數和命名關鍵字參數。

eg.

def my_func2(name, age, *, prof, city) :print(name, age, prof, city)

output

>>> from function3 import my_func2 >>> my_func2('Chen', 20, prof='Student', city='FuZhou') Chen 20 Student FuZhou

注意:指定了關鍵字參數的key之后,傳入的關鍵字參數數目必須匹配,并且必須是 key=value 的形式。

命名關鍵字參數必須傳入參數名。

eg.

>>> my_func2('Chen', 20, prof='Student') Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: my_func2() missing 1 required keyword-only argument: 'city'>>> my_func2('Chen', 20) Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: my_func2() missing 2 required keyword-only arguments: 'prof' and 'city' >>> my_func2('Chen', 20, 'Student', 'FuZhou') Traceback (most recent call last):File "<stdin>", line 1, in <module> TypeError: my_func2() takes 2 positional arguments but 4 were given

3.命名關鍵字支持默認參數,在調用時,可以不傳入默認參數的值。

C.參數組合

在Python中定義函數,可以用必選參數、默認參數、可變參數、關鍵字參數和命名關鍵字參數,這5種參數都可以組合使用。但是請注意,參數定義的順序必須是:必選參數、默認參數、可變參數(*[···] or *list_name)、命名關鍵字參數和關鍵字參數(**{···} or **dict_name)。

eg.

def my_func3(a, b, c=0, *d, **e) :print(a, b, c, d, e)

output

>>> my_func3('Chen', 20) Chen 20 0 () {}>>> my_func3('Chen', 20, 100) Chen 20 100 () {}>>> my_func3('Chen', 20, 100, *['Li', 'Wang'], **{'Li' : 'num1', 'Wang' : 'num2'}) Chen 20 100 ('Li', 'Wang') {'Wang': 'num2', 'Li': 'num1'}>>>

在函數調用的時候,Python解釋器自動按照參數位置和參數名把對應的參數傳進去。

也就出現了原文傳入一個tuple和一個dict,解釋器也正常輸出的情況:

>>> t1 = ('Li', 100, 99, 'Wang')>>> d1 = {'Wang' : 'num2', 'Li' : 'num1'}>>> my_func3(*t1, **d1) Li 100 99 ('Wang',) {'Wang': 'num2', 'Li': 'num1'}>>> t2 = ('Li', 100, 'Wang')>>> my_func3(*t2, **d1) Li 100 Wang () {'Wang': 'num2', 'Li': 'num1'} # 按位置解釋>>> t3 = ['Li', 100, 'Wang']>>> my_func3(*t3, **d1) Li 100 Wang () {'Wang': 'num2', 'Li': 'num1'} # 傳入一個list和一個tuple也可以>>>

2017/1/31

轉載于:https://www.cnblogs.com/qq952693358/p/6359044.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Python学习札记(十三) Function3 函数参数二的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 做爰视频毛片视频 | 久久综合热 | 91精产国品 | 日日骚视频 | 成全世界免费高清观看 | 亚洲色图 美腿丝袜 | 伊人一区二区三区四区 | 免费在线观看视频a | 国产又粗又猛又黄又爽的视频 | 清纯唯美亚洲综合 | 亚洲国产免费看 | 激情福利视频 | 人人爽人人爽人人 | 黄色天堂 | www.色综合.com | 久草视频资源 | 欧美日韩黄色一级片 | 日韩一区欧美一区 | 蜜桃视频一区二区三区 | www.黄色网址.com | 特黄视频在线观看 | 亚洲美女黄色片 | 亚洲成年人在线 | 午夜吃瓜| 无套内谢少妇高潮免费 | 蝌蚪网在线视频 | 西野翔之公侵犯中文字幕 | 中文字幕日韩一区 | 日本三级一区二区三区 | 可以免费看黄的网站 | 天天爱天天插 | 婷婷九月综合 | 久久久久久久9 | 吖v在线 | 久久国产日韩 | 久久久成人精品视频 | 超碰人人人人人人 | 91黄免费| 午夜爱爱影院 | 在线观看日韩视频 | 在线观看的av网址 | 色av网站| 国产乱视频| 美女一二区 | 日本少妇喂奶漫画 | 国产乱码一区二区 | 亚洲一区二区三区免费在线观看 | 91精产国品一二三区在线观看 | 教练含着她的乳奶揉搓揉捏动态图 | 在线看91 | 有色影院 | 奇米在线777 | 中文字幕色片 | 成人看片免费 | 什么网站可以看毛片 | 欧美做爰啪啪xxxⅹ性 | 国产在线一区二区三区 | 成色网| 青青草久| 欧美最猛黑人xxxx | 国产专区欧美专区 | 国产精品成熟老女人 | 黄色免费网 | 国产suv精品一区二区69 | 国产精品免费一区二区三区都可以 | 黄色a级片在线观看 | 国产一区99 | 手机av在线免费观看 | 国产视频一区在线 | 麻豆国产免费 | 一级做a爰片毛片 | 久久久精品区 | 国产地址 | 少妇又色又紧又爽又刺激视频 | 久久久精品国产sm调教 | 国产又粗又硬视频 | 波多野结衣一区二区三区在线观看 | 欧美一区二区久久 | aaa黄色片| 亚洲第九页 | 国产黄色三级网站 | 精品国产av鲁一鲁一区 | 日本伦理一区 | 在线播放a | 可以看的av网址 | 国产欧美一区二区三区白浆喷水 | 国产精品久久久久免费 | 国产欧美色图 | 欧美大片18| 91porn破解版 | 中文字幕日韩三级 | 免费极品av一视觉盛宴 | 青青草狠狠干 | 国产成人av免费看 | 看片在线观看 | 秋霞视频在线观看 | 99热在线免费观看 | 最新国产拍偷乱偷精品 | 男女裸体影院高潮 |