2
我正在處理嵌套函數有4級嵌套的Python代碼。你可以看到下面的例子:如何避免嵌套函數的多級嵌入
class TestClass:
def __init__(self):
pass
def calculate(self, x, y):
results = []
result = None
context = API.send_request('get_context')
if context['result'] == 'ok':
result = context['data']
# Some more actions here
def _is_valid_variable(variable):
if (variable > 0 and
variable % 2 == 0 and
variable < 10):
return True
return False
def _format_data(data):
formatted_data = None
def _extract_time(line):
time = None
if line:
time = line.split('|')[-1]
return time
if data:
for line in data.split('\n'):
formatted_data += '[DEBUG] [{0}] {1}'.format(_extract_time(line), line.split('|')[1])
return formatted_data
return results
在這個例子中只有3個層次,但想法是相同的。
構建此類代碼的更好方法是什麼?
將所有閉包/內部函數放在父函數的開始處不要混合代碼更好嗎?
P.S.我不想把這些功能放到班級的水平上,只要他們實際上與班級沒有關係,而只與他們的家長功能有關。
[*「Flat比嵌套更好。」*](https://www.python.org/dev/peps/pep-0020/)您的嵌套函數似乎不需要閉包,根本不需要嵌套。 – jonrsharpe
^- +1,我看不到任何你需要「嵌套」功能的原因,簡單的類方法或staticmethod會做得很好。不要讓你的代碼複雜化。 – Anzel
如果函數是在一個函數內部定義的,那麼每次函數運行時_redefined。這會讓你的功能變慢,沒有理由。 – RemcoGerlich