哪个是最佳实践?冗余循环,还是调用相同的 if 语句?

1 python optimization redundancy

我正在学习如何编写最优化和可读的代码。我写的第一种方法有多余的 for 循环,但只检查一次驱逐策略。虽然我的第二种方法没有多余的 for 循环,但每次迭代都会检查驱逐策略。有更好的方法来编写这段代码吗?

    if self.remainingSpace - content.size < 0:
        if evictionPolicy == 'lru':
            while self.remainingSpace - content.size < 0:
                self.lruEvict()
        else:
            while self.remainingSpace - content.size < 0:
                self.mruEvict()
Run Code Online (Sandbox Code Playgroud)

或者

    if self.remainingSpace - content.size < 0:
        while self.remainingSpace - content.size < 0:
            if evictionPolicy == 'lru':
                self.lruEvict()
            else:
                self.mruEvict()
Run Code Online (Sandbox Code Playgroud)

Sha*_*ger 5

最简单且最快的版本。由于evictionPolicy永远不会改变,因此请预先选择方法,将其放入通用名称中,然后使用单个通用循环:

evict = self.lruEvict if evictionPolicy == 'lru' else self.mruEvict

while self.remainingSpace - content.size < 0:  # As noted on the other answer, self.remainingSpace < content.size would be slightly more efficient
    evict()
Run Code Online (Sandbox Code Playgroud)

无需重复代码,无需运行时重复检查每个循环上调用哪个方法。