第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有沒有辦法讓Python的函數(shù)的函數(shù)更具可讀性?

有沒有辦法讓Python的函數(shù)的函數(shù)更具可讀性?

哈士奇WWW 2023-05-23 15:57:09
我用 Python 編寫了以下代碼,在一個參數(shù)“x”中涉及多個函數(shù):stemming(removeStopWords(stringToList(removeRepChar(charOk(x)))))我想知道我是否可以做些什么來使該代碼更具可讀性(如果它還不夠可讀)。我可以像在其他編程語言中那樣以某種方式省略那些括號嗎?例如在 Haskell 中:stemming $ removeStopWords $ stringToList $ removeRepChar $ charOk x或無點方法funct = stemming.removeStopWords.stringToList.removeRepChar.charOk funct(x)我擔(dān)心我有數(shù)百個括號和函數(shù)的情況,比如那些可能會變成無聊的更大代碼的情況:function1(function2(function3( ... (function300(x)) ... )))我知道 Python 不是一種純函數(shù)式語言,但沒人知道
查看完整描述

2 回答

?
叮當貓咪

TA貢獻1776條經(jīng)驗 獲得超12個贊

就個人而言,我只是使用帶括號的“本機”Python 方式,其中一個Chain類用于__getattr__提供范圍內(nèi)定義的任何函數(shù)globals。

class Chain:

? ? def __init__(self, val):

? ? ? ? self.val = val

? ? def __getattr__(self, f):

? ? ? ? return lambda: Chain(globals()[f](self.val))


def upper(s):

? ? return s.upper()


def pad(s):

? ? return "abc" + s + "xyz"

? ??

def swap(s):

? ? return s.swapcase()


print(Chain("foo").upper().pad().swap().val)

# ABCfooXYZ

或者使用partialandreduce來創(chuàng)建一個compose函數(shù)(雖然我覺得這樣的東西應(yīng)該已經(jīng)存在了):


from functools import reduce, partial


def compose(*fs):

? ? return partial(reduce, lambda x, f: f(x), fs)


print(compose(upper, pad, swap)("foo"))


查看完整回答
反對 回復(fù) 2023-05-23
?
慕俠2389804

TA貢獻1719條經(jīng)驗 獲得超6個贊

您可以嘗試以下幾個選項。一種是編寫您自己的帶有函數(shù)和參數(shù)的“應(yīng)用”。


def apply_functions(functions, arg):

    for fctn in functions:

        arg = fctn(arg)

    return arg


result = apply_functions((charOk, removeRepChar, stringToList,

    removeStopWords), x)

另一種方法是將您的函數(shù)放入一個類中并使用方法鏈接。您已經(jīng)有返回值的函數(shù),只需 returnself即可。


class Foo:


    def __init__(self, df):

        self.df = df


    def charOk(self):

        # do the operation

        return self


    def removeRepChar(self):

        # do the operation

        return self


    etc...


result = Foo(x).charOk().removeRepChar().stringToList().removeStopWords()


查看完整回答
反對 回復(fù) 2023-05-23
  • 2 回答
  • 0 關(guān)注
  • 143 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號