Как сделать несколько return в одной функции в Python?
Функция в python может вернуть значение только один раз. Если нужно вернуть разные значения в зависимости от условий, то можно воспользоваться условной конструкцией if :
def function(): . if condition1: return result1 if condition2: return result2
Также можно вернуть несколько значений одновременно в виде кортежа:
def function(): . return result1, result2
Как использовать несколько возвращаемых значений функции в другой функции на Python
Хочу на Python использовать в другой функции возвращаемые значения этой функции как аргументы. Как сделать так чтобы они сохранялись и мне не приходилось несколько раз вызывать функцию?
import random def random_generator(duration): random_words = [] random_nums = [] while duration != 0: #Words words = ['Dog', 'Cat', 'Pig', 'Parrot'] num_of_word = int(random.randint(0, 3)) word_random = words[num_of_word] random_words.append(word_random) #Nums num_random = int(random.randint(0, 7)) random_nums.append(num_random) duration -= 1 return random_words, random_nums
Отслеживать
задан 2 июн 2020 в 21:21
Vladislav Morozov Vladislav Morozov
1 1 1 бронзовый знак
a,b = random_generator(duration)
2 июн 2020 в 21:32
3 июн 2020 в 10:52
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
. def new_func(l=random_generator(12)): print(f'random_words = ') print(f'random_nums = ') new_func()
random_words = [‘Dog’, ‘Parrot’, ‘Pig’, ‘Pig’, ‘Parrot’, ‘Cat’, ‘Pig’, ‘Cat’, ‘Cat’, ‘Cat’, ‘Cat’, ‘Cat’]
random_nums = [2, 6, 5, 5, 0, 5, 3, 4, 7, 2, 1, 5]
Отслеживать
ответ дан 2 июн 2020 в 21:35
73.6k 112 112 золотых знаков 38 38 серебряных знаков 55 55 бронзовых знаков
Как сделать возвращение нескольких параметров из функции в Python?
Функции в Python возвращают значения с помощью оператора return . Чтобы вернуть несколько значений достаточно написать их после оператора через запятую. Тогда функция вернет кортеж из значений:
# функция разделяет строку на имя и фамилию def split_fullname(fullname): name, lastname = fullname.split(' ') return name, lastname print(split_fullname('John Snow')) # => ('John', 'Snow') name, lastname = split_fullname('John Snow') print(f'Your name: name>. Last name: lastname>') # => Your name: John. Last name: Snow
Использование объекта (object)

Это похоже на C/C++ и Java, мы можем создать класс (в C, структуру) для хранения нескольких значений и возврата объекта класса.
# A Python program to return multiple # values from a method using class class Test: def __init__(self): self.str = "string example" self.x = 20 # This function returns an object of Test def fun(): return Test() # Driver code to test above method t = fun() print(t.str) print(t.x)
Результат работы кода:
string example 20
Использование кортежа (tuple)
Кортеж представляет собой последовательность элементов, разделенных запятыми. Он создается с или без (). Кортежи неизменны.
# A Python program to return multiple # values from a method using tuple # This function returns a tuple def fun(): str = "string example" x = 20 return str, x; # Return tuple, we could also # write (str, x) # Driver code to test above method str, x = fun() # Assign returned tuple print(str) print(x)
Результат работы кода:
string example 20
Использование списка (list)
Список похож на массив элементов, созданный с помощью квадратных скобок. Они отличаются от массивов тем, что могут содержать элементы разных типов. Списки отличаются от кортежей тем, что они изменяемы.
# A Python program to return multiple # values from a method using list # This function returns a list def fun(): str = "string example" x = 20 return [str, x]; # Driver code to test above method list = fun() print(list)
Результат работы кода:
['string example', 20]
Использование словаря (dictionary)
Словарь похож на хэш или карту на других языках.
# A Python program to return multiple # values from a method using dictionary # This function returns a dictionary def fun(): d = dict(); d['str'] = "string example" d['x'] = 20 return d # Driver code to test above method d = fun() print(d)
Результат работы кода:
Использование класса данных (Data Class)
В Python 3.7 и более поздних версиях класс данных можно использовать для возврата класса с автоматически добавленными уникальными методами. Модуль класса данных имеет декоратор и функции для автоматического добавления сгенерированных специальных методов, таких как __init__() и __repr__() в пользовательские классы.
from dataclasses import dataclass @dataclass class Book_list: name: str perunit_cost: float quantity_available: int = 0 # function to calculate total cost def total_cost(self) -> float: return self.perunit_cost * self.quantity_available book = Book_list("Introduction to programming.", 300, 3) x = book.total_cost() # print the total cost # of the book print(x) # print book details print(book) # 900 Book_list(name='Python programming.', perunit_cost=200, quantity_available=3)
Результат работы кода:
900 Book_list(name='Introduction to programming.', perunit_cost=300, quantity_available=3) Book_list(name='Python programming.', perunit_cost=200, quantity_available=3)