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

對Python強大的可變參數(shù)傳遞機制詳解

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

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

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

t=(arg1,...,argn)

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

f(arg1,...,argn)

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

我一開始想到的是很原始的解法,先把t的各個成員變?yōu)樽址男问?再用英文逗號把它們串聯(liá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))

看起來就相當于:

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

一運行發(fā)現(xiàn),對于命名函數(shù)float可以正常運作,但對于匿名函數(shù)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強大的可變參數(shù)傳遞機制詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Python3與redis交互,保存的是字符串,取出來是bytes類型問題

    Python3與redis交互,保存的是字符串,取出來是bytes類型問題

    這篇文章主要介紹了Python3與redis交互,保存的是字符串,取出來是bytes類型問題,具有很好的參考價值,希望對大家有所幫助,
    2023-09-09
  • python PyQt實現(xiàn)的手寫電子簽名程序實例探究

    python PyQt實現(xiàn)的手寫電子簽名程序實例探究

    在本文中,我們將探討如何利用Python以及開源工具來實現(xiàn)手寫電子簽名的功能,通過本文,您將能夠了解到手寫電子簽名的實現(xiàn)方式,并可以在自己的應用程序中應用這一功能
    2023-12-12
  • 30行Python代碼打造一款簡單的人工語音對話

    30行Python代碼打造一款簡單的人工語音對話

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

    Python實現(xiàn)遺傳算法(虛擬機中運行)

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

    Django 請求Request的具體使用方法

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

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

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

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

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

    Python colormap庫的安裝和使用詳情

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

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

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

    Python?boxplot?用法詳解

    這篇文章主要介紹了Python?boxplot?用法詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07

最新評論

长汀县| 合水县| 峨眉山市| 名山县| 壤塘县| 安顺市| 宝山区| 香河县| 日喀则市| 平乐县| 达尔| 徐闻县| 灵台县| 和平县| 呼和浩特市| 达尔| 荥阳市| 灵台县| 习水县| 屏东市| 泰州市| 凌源市| 永春县| 麦盖提县| 乌拉特后旗| 芦山县| 沂源县| 杭锦后旗| 专栏| 志丹县| 南通市| 康平县| 洛扎县| 乌拉特中旗| 上蔡县| 松江区| 合水县| 东光县| 湖北省| 伽师县| 湘乡市|