我应该将一个函数写在另一个函数内部,还是全部写在全局框架中?
我应该将一个函数写在另一个函数内部,还是全部写在全局框架中?
这并不是一个复杂的问题,但我在周围找不到明确的答案。\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我的问题是:这有什么区别?哪个更好?
我认为这两种方法都是有效的。isPrime非常小,所以可以很容易地嵌入其中。如果你想重复使用这个函数,将其定义为全局函数是有意义的。
“如果你想重复使用”在这里非常重要,但我认为函数的大小是一个误导,很少是关键问题,而且你把它放在了第一位。
我认为嵌入函数的长度也是一个问题。如果嵌入函数非常长,而嵌入的函数本身非常短,那么代码可能会变得不太可读。
在上述内容中,作者提到了函数嵌套和全局函数的两种写法。作者认为这两种方法都是有效的,但具体选择哪一种取决于是否需要重复使用函数以及函数的大小。如果希望重复使用函数,将其定义为全局函数是有意义的。如果嵌入函数非常小且嵌入的函数本身非常短,那么函数嵌套的方式更加合适。然而,作者指出函数的大小并不是决定性的因素,更重要的是函数的可读性。
根据以上内容,可以得出以下结论:
问题的出现原因:作者提到了函数嵌套和全局函数两种写法的优缺点,讨论了函数的重复使用和函数的大小对选择的影响。
解决方法:根据具体情况选择函数嵌套或全局函数的写法,考虑是否需要重复使用函数以及函数的大小对代码可读性的影响。