簡體   English   中英

Python和函數式編程:是否有apply()函數?

[英]Python and functional programming: is there an apply() function?

Scala具有apply()函數。

我是Python的新手,我想知道如何編寫以下單行代碼:

(part_a, part_b) = (lambda x: re.search(r"(\w+)_(\d+)", x).groups())(input_string)

我會感覺更好:

(part_a, part_b) = input_string.apply(lambda x: re.search(r"(\w+)_(\d+)", x).groups())

從FF的角度來看,我錯了嗎? Python中有這樣的結構嗎?

編輯:我知道糟糕挑選的片段。

在編寫Haskell時編寫Haskell。 編寫Python時只需編寫Python:

part_a, part_b = re.search(r"(\w+)_(\d+)", input_string).groups()

如果您使用Python而不apply ,您可以隨時自己編寫...

def apply(fn, args=(), kwargs=None):
    if kwargs is None:
        kwargs = {}
    return fn(*args, **kwargs)

只是因為你可以,並不意味着你應該......

Python沒有這樣的構造; 重點是什么? lambda x: ...是一個函數,因此它應該像普通函數一樣使用,即像你的第一個片段一樣使用(lambda x: ...)(input_string)

但是,在你的情況下,我認為沒有理由你甚至不打擾lambda; 做就是了:

(part_a, part_b) = re.search(r"(\w+)_(\d+)", input_string).groups()

如果您擔心重用,可以編譯正則表達式:

rx = re.compile(r"(\w+)_(\d+)")
a, b = rx.search(input_string).groups()

Python曾經有一個應用函數( docs ),但它已經在python 3中被刪除了,因為它是不必要的,而且對於python的原則,應該只有一種方法來做特定的事情。

比方說,我們有一個名為“func”的函數,我們可以輕松調用func(* args)而不是apply(func,args)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM