Python中函数参数重复有什么解决方案吗?

问题描述 投票:0回答:1

我想知道在另一个函数中使用函数时是否可以避免使用相同的参数。我会给你一段代码来清楚地说明:

def calculateQC(self,dic_symbols:dict) -> float:

        str_quality = self.quality
        length_seq = len(str_quality)
        num_qc = 0

        for symbol in str_quality:
            num_value = dic_symbols[symbol]
            num_qc += num_value

        mean_qc = num_qc/length_seq
        return(mean_qc)    


def FastqtoFasta(self,min_qual:int,dic_symbols:dict) -> FastaFile:
        header,sequence,qualc = self.info,self.seq,self.quality
        qualc = self.calculateQC(dic_symbols)

        if qualc >= min_qual:
            print(">%s\n%s" %(header,sequence))

如您所见,函数 FastqtoFasta 包含另一个名为calculateQC 的函数,该函数需要一个字典作为参数。因此,我还必须向 FastqtoFasta 提供字典才能解决这个问题,否则我将无法使用calculateQC(错误)。

是否有更直接的解决方案,或者这只是唯一的方法?

谢谢。

python function duplicates
1个回答
0
投票

如果您希望在函数堆栈中松散地共享参数,建议通过

**kwargs
(字典)传递参数。

def calculateQC(self, **kwargs) -> float:
   dic_symbols = kwargs.get('symbols')
   ## do stuff

def FastqtoFasta(self, **kwargs) -> FastaFile:
    min_qual = kwargs['min']
    qualc = self.calculateQC(**kwargs)
    ## do stuff

调用该函数:

 myObj.FastqtoFasta( min=#, symbols= {...})
© www.soinside.com 2019 - 2024. All rights reserved.