Если вы хотите «вернуть» значение без завершения функции, вы можете использовать yield
вместо return
. Это делает результат итератором значений вместо одного значения.
def readList(champs):
for i in range(len(champs)):
champ = champs[i]
yield (str(i+93) + " - " + champ)
Затем, чтобы распечатать его, вы можете распаковать итератор с помощью *. Может быть, как
print(*readList(champs), sep='\n')
Или вы можете использовать для l oop как
for line in readList(champs):
print(line)
Это будет печатать одну строку за раз, а не все сразу, что может быть Вы хотите, если число строк велико.
Этот подход, использующий yield
, может быть лучше, чем печать непосредственно внутри функции readList()
, поскольку он позволяет избежать побочных эффектов, что означает, что вы можете сделать больше, чем просто напечатать это. Вы также можете сохранить результат в файл, например.
Этот подход также может быть лучше, чем сохранить его в список и вернуть весь список, если количество элементов велико, потому что он может обрабатывать один в время и не нужно сохранять их все в памяти сразу 1025 * для имен функций. Если вы используете enumerate()
вместо range()
, вам не нужно искать champ
самостоятельно каждый l oop с индексом. И вы можете начать считать с 93, так что вам больше не нужно его добавлять. F-строки автоматически преобразуют то, что они интерполируют, поэтому вам не нужно вызывать str()
самостоятельно.