欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

對Python強大的可變參數傳遞機制詳解

系統 1612 0

今天模擬定義map函數.寫著寫著就發現Python可變長度參數的機制真是靈活而強大.

假設有一個元組t,包含n個成員:

            
t=(arg1,...,argn)
          

而一個函數f恰好能接受n個參數:

            
f(arg1,...,argn)
          

f(t)這種做法顯然是錯的,那么如何把t的各成員作為獨立的參數傳給f,以便達到f(arg1,...,argn)的效果?

我一開始想到的是很原始的解法,先把t的各個成員變為字符串的形式,再用英文逗號把它們串聯起來,形成一個"標準參數字符串":

            
str_t=(str(x) for x in t)
str_args=",".join(str_t)
          

str_args成了字符串"arg1,...,argn",這樣,

            
eval('%s(%s)'%(f.__name__,str_args))
          

看起來就相當于:

            
f(arg1,...,argn)
          

老版本:

            
def imap(func,arr,*arrs):
 allarrs=(arr,)+arrs
 args=[]
 for i in range(len(arr)):
  member=[]
  for ar in allarrs:
   member.append(str(ar[i]))
  args.append(member)
 return (eval('%s(%s)'%(func.__name__,','.join(member))) for member in args)

print list(imap(float,(1,2,3,4)))
print list(imap((lambda x,y,z:x+y+z),(1,1,1,1),(1,1,1,1),(1,1,1,1)))
          

一運行發現,對于命名函數float可以正常運作,但對于匿名函數lambda就不行了.顯然eval思路的局限就在這里.

我突然想起,直接f(*t) 就可以達到目的了!于是,新版本:

            
def imap(func,arr,*arrs):
 allarrs=(arr,)+arrs
 return (func(*(ar[i] for ar in allarrs)) for i in range(len(arr)))

print list(imap(float,(1,2,3,4)))
print list(imap((lambda x,y,z:x+y+z),(1,1,1,1),(1,1,1,1),(1,1,1,1)))

          

結果:

            
>>> 
[1.0, 2.0, 3.0, 4.0]
[3, 3, 3, 3]
          

而且function(*args_tuple)的強大機制在于,args_tuple不一定是元組,任意可迭代對象均可.列表,字典,生成器等.

            
>>> def function(*iterable):
 print iterable

 
>>> function(*(1,2,3))
(1, 2, 3)
>>> function(*[1,2,3])
(1, 2, 3)
>>> function(*{1:'',2:''})
(1, 2)
>>> function(*(i for i in range(4)))
(0, 1, 2, 3)
>>>
          

以上這篇對Python強大的可變參數傳遞機制詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲黄色在线网站 | 国产一区二区av | 偷拍自拍色 | 精品视频在线播放 | 操天天操 | 最新中文字幕在线 | 久久视频在线视频 | 成人午夜精品一区二区三区 | 国产欧美日韩在线不卡第一页 | 天天操夜夜 | 色秀视频免费网站在线观看 | 狠狠澡夜夜澡人人爽 | 亚洲一区二区在线 | 天堂一区二区三区四区 | 色多多成视频人在线观看 | 亚洲国产欧美在线观看 | 天天干com| 国产91福利在线精品剧情尤物 | 亚洲精品一区 | 男人和女人做爰毛片试看 | 99毛片| 嫩草99| 日本午夜在线观看 | 91在线视频观看 | 国产精品无码专区在线观看 | 一区二区三区日韩在线观看 | 日日操天天操夜夜操 | 色噜噜狠狠先锋影音久久 | 亚洲区国产区 | 高清不卡一区 | 668溜溜吧| 欧美日韩精品一区二区三区四区 | 久久精品re| 欧美ab在线| 亚洲精品乱码8久久久久久日本 | 亚洲国产精品国自产电影 | 久久久亚洲伊人色综合网站 | 日本黄色一级视频 | 国产精品久久久久9999高清 | 久久久久亚洲视频 | 大学生a级毛片免费视频 |