Перейти к содержимому

Как вернуть несколько значений из функции python

  • автор:

Как сделать несколько 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)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *