Функция return в python
Всем привет! У меня есть код, который бежит по диапазону строк, при этом выкидывая None. Если не использовать return и def, то все работает отлично, но я не могу забрать полученные значения из функции в дальнейший код. Пример:
for i in range(19, 24):
model_name = (sheet.cell(row=i, column=2).value)
if model_name != None:
print(model_name)
Вывод:
Значение 1
Значение 2
...
Решил попробовать использовать def + return, но при этом получается, что забирается только первое значение из range. Пример:
def MD():
for i in range(19, 24):
model_name = (sheet.cell(row=i, column=2).value)
if model_name != None:
return model_name
model_name = MD()
print(model_name)
Вывод:
Значение 1
Вопрос: Как сделать так, чтобы я смог вытащить все значения из функции в "глобальный" код, т.е. за ее пределы? Спасибо всем заранее!
P.S. Так же необходимо отсеивать None
Ответы (2 шт):
Возвращайте список.
Пример:
def md():
result = []
for i in range(19, 24):
model_name = sheet.cell(row=i, column=2).value
if model_name is not None:
result.append(model_name)
return result
Можно обойтись и без промежуточного списка, если использовать оператор yield, с помощью которого можно вернуть из функции сколько угодно значений (включая бесконечное количество значений):
def get_models():
for i in range(19, 24):
model_name = (sheet.cell(row=i, column=2).value)
if model_name is None:
yield model_name
for model_name in get_models():
print(model_name)