最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

對(duì)Python強(qiáng)大的可變參數(shù)傳遞機(jī)制詳解

 更新時(shí)間:2019年06月13日 09:08:21   作者:LisPythoniC  
今天小編就為大家分享一篇對(duì)Python強(qiáng)大的可變參數(shù)傳遞機(jī)制詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

今天模擬定義map函數(shù).寫著寫著就發(fā)現(xiàn)Python可變長(zhǎng)度參數(shù)的機(jī)制真是靈活而強(qiáng)大.

假設(shè)有一個(gè)元組t,包含n個(gè)成員:

t=(arg1,...,argn)

而一個(gè)函數(shù)f恰好能接受n個(gè)參數(shù):

f(arg1,...,argn)

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

我一開始想到的是很原始的解法,先把t的各個(gè)成員變?yōu)樽址男问?再用英文逗號(hào)把它們串聯(lián)起來(lái),形成一個(gè)"標(biāo)準(zhǔn)參數(shù)字符串":

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

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

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

看起來(lái)就相當(dāng)于:

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)))

一運(yùn)行發(fā)現(xiàn),對(duì)于命名函數(shù)float可以正常運(yùn)作,但對(duì)于匿名函數(shù)lambda就不行了.顯然eval思路的局限就在這里.

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

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)))

結(jié)果:

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

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

>>> 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)
>>>

以上這篇對(duì)Python強(qiáng)大的可變參數(shù)傳遞機(jī)制詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

  • 30行Python代碼打造一款簡(jiǎn)單的人工語(yǔ)音對(duì)話

    30行Python代碼打造一款簡(jiǎn)單的人工語(yǔ)音對(duì)話

    使用gtts和speech_recognition實(shí)現(xiàn)簡(jiǎn)單的人工語(yǔ)音對(duì)話,通過(guò)將語(yǔ)音變成文本,然后文本變成語(yǔ)音,僅用30行代碼,超級(jí)簡(jiǎn)單,對(duì)Python人工語(yǔ)音對(duì)話的實(shí)現(xiàn)過(guò)程及完整代碼感興趣的朋友一起看看吧
    2021-05-05
  • Python實(shí)現(xiàn)遺傳算法(虛擬機(jī)中運(yùn)行)

    Python實(shí)現(xiàn)遺傳算法(虛擬機(jī)中運(yùn)行)

    遺傳算法(GA)是最早由美國(guó)Holland教授提出的一種基于自然界的“適者生存,優(yōu)勝劣汰”基本法則的智能搜索算法。本文主要介紹了如何通過(guò)Python實(shí)現(xiàn)遺傳算法,感興趣的同學(xué)可以看一看
    2021-11-11
  • Django 請(qǐng)求Request的具體使用方法

    Django 請(qǐng)求Request的具體使用方法

    這篇文章主要介紹了Django 請(qǐng)求Request的具體使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • numpy矩陣乘法中的multiply,matmul和dot的使用

    numpy矩陣乘法中的multiply,matmul和dot的使用

    本文主要介紹了numpy矩陣乘法中的multiply,matmul和dot的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python中列表和元組的區(qū)別

    python中列表和元組的區(qū)別

    給大家詳細(xì)講解了python中列表和元組的區(qū)別,需要的朋友參考一下。
    2017-12-12
  • Python colormap庫(kù)的安裝和使用詳情

    Python colormap庫(kù)的安裝和使用詳情

    這篇文章主要介紹了Python colormap庫(kù)的安裝和使用詳情,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • python中的turtle庫(kù)函數(shù)簡(jiǎn)單使用教程

    python中的turtle庫(kù)函數(shù)簡(jiǎn)單使用教程

    這篇文章主要介紹了python中的turtle庫(kù)函數(shù)簡(jiǎn)單使用教程。本文通過(guò)圖片的形式給大家展示的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-07-07
  • Python?boxplot?用法詳解

    Python?boxplot?用法詳解

    這篇文章主要介紹了Python?boxplot?用法詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 最新評(píng)論

    恭城| 西平县| 营山县| 巴彦淖尔市| 泸溪县| 白山市| 竹山县| 甘泉县| 佛山市| 金平| 积石山| 毕节市| 易门县| 土默特右旗| 云南省| 富平县| 泸定县| 托克托县| 台中县| 乐业县| 冀州市| 广宗县| 云阳县| 瑞丽市| 夹江县| 抚顺市| 通州区| 若羌县| 南城县| 屏南县| 乌什县| 刚察县| 瑞安市| 汕头市| 五大连池市| 台南县| 祁连县| 陆良县| 濮阳县| 霍山县| 新安县|