Я пытаюсь вызвать функцию внутри той же функции, которая была определена

Не является автономным ответом, просто добавлением к ответу Микеля, который я не мог хорошо вписать в комментарий.

Вы можете заполнить массив, используя цикл, оператор + = и документ здесь а также:

SAMPLE=()
while read; do SAMPLE+=("$REPLY"); done <<EOF
1-first.with.custom.name
2-second.with.custom.name
EOF

В bash 4.0 это так же просто, как

readarray SAMPLE <<EOF
1-first.with.custom.name
2-second.with.custom.name
EOF
0
задан lurker 17 March 2019 в 20:16
поделиться

1 ответ

Вызов функции внутри себя известен как рекурсия и является альтернативой циклу. Но это приходит по цене. Python должен «помнить» все предыдущие вызовы функции, в отличие от циклов, которые сбрасываются каждый раз. Из-за этого вы можете понять, почему в конечном итоге вашему компьютеру не хватит памяти, потому что вы не прекращаете вызов enter.

Это называется переполнением стека, т. Е. Когда «стек» (память) компьютера переполняется (становится слишком высоким и вроде падает). Другие старые языки, такие как C, вообще не справляются с этим вообще , и переполнение стека вроде как стало предметом для программистов (именно поэтому это называется StackOverflow.com - чтобы помочь другим). со своими проблемами).

Чтобы избежать этого, Python устанавливает предел того, как далеко вы можете пройти, и превышение этого лимита вызовет ошибку (вместо того, чтобы сломать ваш компьютер). Чтобы ваш код не достиг этого (очень высокого) предела, вам нужно указать условие выхода . Здесь вы возвращаете вместо повторения. Это может быть так же просто, как оператор if, или более сложным. Это также имеет смысл. То, как вы это делаете сейчас, очевидно, почему оно продолжает повторяться, вы никогда не говорите этого не делать.

0
ответ дан Levi Lesches 17 March 2019 в 20:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: