Tránh dùng hàm lồng để làm giảm sự couple
Function Nesting Use Cases (mostly functional idioms, almost certainly incomplete since it’s off the top of my head):
- closures
- function factory (programmatic function creation based on parameters)
- creating functions by calling functool.partial
- creating functions by using lambda
- any other reasons you need to create functions during call time
Trade-offs:
- functions are strongly coupled
- the code is always called (unless it’s in an if block)
- additional code complexity
- additional runtime cost (potentially, because the inner function get’s re-defined with every call to the outer function)
- much harder to extend
- much harder to introspect on the inner function defintion
Nguồn:: Stack Overflow, When to use python function nesting?