Cách trả về nhiều giá trị trả về trong một hàm Python

Kinh doanh

Trong C, việc trả về nhiều giá trị trả về từ một hàm khá tẻ nhạt, nhưng trong Python, điều đó rất dễ thực hiện.

Trả về được phân tách bằng dấu phẩy

Trong Python, bạn có thể chỉ cần trả về một danh sách các chuỗi hoặc số được phân tách bằng dấu phẩy.

Ví dụ: hãy xác định một hàm chỉ trả về một chuỗi và một số như được hiển thị bên dưới, với mỗi hàm được phân tách bằng dấu phẩy sau giá trị trả về.

def test():
    return 'abc', 100

Trong Python, các giá trị được phân tách bằng dấu phẩy được coi là các bộ giá trị không có dấu ngoặc đơn, ngoại trừ trường hợp cần thiết về mặt cú pháp. Do đó, hàm trong ví dụ trên sẽ trả về một bộ giá trị với mỗi giá trị là một phần tử.

Đó là dấu phẩy tạo ra bộ giá trị, không phải dấu ngoặc tròn. Có thể bỏ qua dấu ngoặc tròn, ngoại trừ trường hợp bộ giá trị trống hoặc khi cần thiết để tránh sự mơ hồ về cú pháp.
Built-in Types — Python 3.10.0 Documentation

Loại giá trị trả về là một bộ giá trị.

result = test()

print(result)
print(type(result))
# ('abc', 100)
# <class 'tuple'>

Mỗi phần tử sẽ thuộc kiểu được xác định bởi hàm.

print(result[0])
print(type(result[0]))
# abc
# <class 'str'>

print(result[1])
print(type(result[1]))
# 100
# <class 'int'>

Lỗi nếu bạn chỉ định một chỉ mục vượt quá số lượng giá trị trả về bạn đã xác định.

# print(result[2])
# IndexError: tuple index out of range

Nó có thể được giải nén và nhiều giá trị trả về có thể được gán cho các biến riêng biệt.

a, b = test()

print(a)
# abc

print(b)
# 100

Điều tương tự cũng áp dụng nếu bạn muốn chỉ định ba hoặc nhiều giá trị trả về thay vì chỉ hai.

def test2():
    return 'abc', 100, [0, 1, 2]

a, b, c = test2()

print(a)
# abc

print(b)
# 100

print(c)
# [0, 1, 2]

Trả về một danh sách.

[]Nếu bạn đính kèm nó với nó, giá trị trả về sẽ là một danh sách thay vì một tuple.

def test_list():
    return ['abc', 100]

result = test_list()

print(result)
print(type(result))
# ['abc', 100]
# <class 'list'>