در C، بازگرداندن چندین مقدار بازگشتی از یک تابع بسیار خسته کننده است، اما در پایتون، انجام آن بسیار آسان است.
بازگشت با کاما از هم جدا شده است
در پایتون، میتوانید به سادگی فهرستی از رشتهها یا اعداد جدا شده با کاما را برگردانید.
به عنوان مثال، تابعی را تعریف کنید که فقط یک رشته و یک عدد را مطابق شکل زیر برمی گرداند و هر کدام پس از بازگشت با کاما از هم جدا می شوند.
def test(): return 'abc', 100
در پایتون، مقادیر جدا شده با کاما، تاپل های بدون پرانتز در نظر گرفته می شوند، مگر در مواردی که از نظر نحوی ضروری باشد. بنابراین، تابع در مثال بالا یک تاپل با هر مقدار به عنوان یک عنصر برمی گرداند.
این کاما است که تاپل را ایجاد می کند، نه براکت های گرد. پرانتزهای گرد را میتوان حذف کرد، مگر در مواردی که تاپلهای خالی وجود دارد یا در مواقع ضروری برای جلوگیری از ابهام نحوی.
Built-in Types — Python 3.10.0 Documentation
نوع مقدار بازگشتی یک تاپل است.
result = test() print(result) print(type(result)) # ('abc', 100) # <class 'tuple'>
هر عنصر از نوع تعریف شده توسط تابع خواهد بود.
print(result[0]) print(type(result[0])) # abc # <class 'str'> print(result[1]) print(type(result[1])) # 100 # <class 'int'>
اگر شاخصی را مشخص کنید که از تعداد مقادیر بازگشتی که تعریف کرده اید بیشتر باشد، خطا دارد.
# print(result[2]) # IndexError: tuple index out of range
می توان آن را باز کرد و چندین مقدار بازگشتی را می توان به متغیرهای جداگانه اختصاص داد.
a, b = test() print(a) # abc print(b) # 100
اگر بخواهید به جای فقط دو مقدار، سه یا چند مقدار بازگشتی را مشخص کنید، همین امر صدق می کند.
def test2(): return 'abc', 100, [0, 1, 2] a, b, c = test2() print(a) # abc print(b) # 100 print(c) # [0, 1, 2]
لیستی را برمی گرداند.
[]
اگر آن را با این محصور کنید، مقدار بازگشتی به جای یک تاپل، یک لیست خواهد بود.
def test_list(): return ['abc', 100] result = test_list() print(result) print(type(result)) # ['abc', 100] # <class 'list'>