我应该将一个函数写在另一个函数内部,还是全部写在全局框架中?

14 浏览
0 Comments

我应该将一个函数写在另一个函数内部,还是全部写在全局框架中?

这并不是一个复杂的问题,但我在周围找不到明确的答案。\n例如,如果我想要找出一个数字列表中的质数数量:\n

def count_prime(lst):
    """lst is a list of integers"""
    def isPrime(n):
        return all(n % div != 0 for div in range(2, int(n**0.5) + 1)) if n > 1 else False
    result = 0
    for num in lst:
        if isPrime(num):
            result += 1
    return result

\n这看起来非常简单,但我将isPrime(n)放在了主函数内部。\n它与以下代码有何区别:\n

def isPrime(n):
    return all(n % div != 0 for div in range(2, int(n**0.5) + 1)) if n > 1 else False
def count_prime(lst):
    """lst is a list of integers"""
    result = 0
    for num in lst:
        if isPrime(num):
            result += 1
    return result

\n我的问题是:这有什么区别?哪个更好?

0
0 Comments

我认为这两种方法都是有效的。isPrime非常小,所以可以很容易地嵌入其中。如果你想重复使用这个函数,将其定义为全局函数是有意义的。

“如果你想重复使用”在这里非常重要,但我认为函数的大小是一个误导,很少是关键问题,而且你把它放在了第一位。

我认为嵌入函数的长度也是一个问题。如果嵌入函数非常长,而嵌入的函数本身非常短,那么代码可能会变得不太可读。

在上述内容中,作者提到了函数嵌套和全局函数的两种写法。作者认为这两种方法都是有效的,但具体选择哪一种取决于是否需要重复使用函数以及函数的大小。如果希望重复使用函数,将其定义为全局函数是有意义的。如果嵌入函数非常小且嵌入的函数本身非常短,那么函数嵌套的方式更加合适。然而,作者指出函数的大小并不是决定性的因素,更重要的是函数的可读性。

根据以上内容,可以得出以下结论:

问题的出现原因:作者提到了函数嵌套和全局函数两种写法的优缺点,讨论了函数的重复使用和函数的大小对选择的影响。

解决方法:根据具体情况选择函数嵌套或全局函数的写法,考虑是否需要重复使用函数以及函数的大小对代码可读性的影响。

0