Bài viết này mô tả cách trả về nhiều giá trị từ một hàm trong Python.
- Trả về nhiều giá trị bằng dấu phẩy
- Trả lại result = test() print(result) print(type(result)) # ('abc', 100) # <class 'tuple'> 1
Xem bài viết sau đây cho những điều cơ bản của các chức năng trong Python.
- Xác định và gọi các chức năng trong Python (def, return)
Trả về nhiều giá trị bằng dấu phẩy
Trả lại result = test() print(result) print(type(result)) # ('abc', 100) # <class 'tuple'> 1
Xem bài viết sau đây cho những điều cơ bản của các chức năng trong Python.
def test(): return 'abc', 100
Xác định và gọi các chức năng trong Python (def, return)
Trong Python, bạn có thể trả về nhiều giá trị bằng cách đơn giản là chúng được phân tách bằng dấu phẩy.
Built-in Types - Tuples — Python 3.7.4 documentation
- Ví dụ, xác định một hàm trả về một chuỗi và số nguyên như sau:
result = test() print(result) print(type(result)) # ('abc', 100) # <class 'tuple'>
Trong Python, các giá trị phân tách bằng dấu phẩy được coi là các bộ đếm không có dấu ngoặc đơn, ngoại trừ khi được yêu cầu bởi cú pháp. Vì lý do này, hàm trong ví dụ trên trả về một tuple với mỗi giá trị dưới dạng một phần tử.
print(result[0]) print(type(result[0])) # abc # <class 'str'> print(result[1]) print(type(result[1])) # 100 # <class 'int'>
Lưu ý rằng đó thực sự là dấu phẩy tạo ra một tuple, không phải dấu ngoặc đơn. Các dấu ngoặc đơn là tùy chọn, ngoại trừ trong trường hợp tuple trống hoặc khi chúng cần thiết để tránh sự mơ hồ của cú pháp. Các loại tích hợp - Tuples - Python 3.7.4 Tài liệu
# print(result[2]) # IndexError: tuple index out of range
Một tuple với một yếu tố yêu cầu một dấu phẩy trong Python
- Mỗi phần tử có một loại được xác định trong hàm.
a, b = test() print(a) # abc print(b) # 100
Tất nhiên, việc chỉ định một chỉ mục vượt quá số lượng giá trị trả về được xác định làm tăng lỗi.
def test2(): return 'abc', 100, [0, 1, 2] a, b, c = test2() print(a) # abc print(b) # 100 print(c) # [0, 1, 2]
Trả lại result = test() print(result) print(type(result)) # ('abc', 100) # <class 'tuple'> 1
Xem bài viết sau đây cho những điều cơ bản của các chức năng trong Python.
def test_list(): return ['abc', 100] result = test_list() print(result) print(type(result)) # ['abc', 100] # <class 'list'>
Mã để trả về nhiều giá trị bằng danh sách:
Mục lục - Python trả về nhiều giá trị:
- Python trả về nhiều giá trị
- Các giá trị được phân tách bằng dấu phẩy (Bộ dữ liệu)
- Danh sách Python
- Từ điển Python
- Sử dụng lớp dữ liệu Python
- Hạn chế và cảnh báo - Python trả về nhiều giá trị
Python trả về nhiều giá trị:
Các chức năng được sử dụng để thực hiện một nhiệm vụ cụ thể mà rất có thể liên quan đến việc trả về một giá trị cụ thể. Tuy nhiên, một vài trường hợp sử dụng có thể yêu cầu bạn trả về hai hoặc nhiều giá trị. Trong các ngôn ngữ lập trình khác, mã để đạt được điều này có thể khá phức tạp nhưng Python cung cấp một vài phương pháp tiện dụng để trả về nhiều giá trị.
Hầu hết các phương pháp này liên quan đến việc sử dụng một loại dữ liệu thu thập để trả về các giá trị này. Chúng tôi đã xem xét kỹ tất cả chúng dưới đây.
Sử dụng các giá trị được phân tách bằng dấu phẩy (Tuples):
Trong phương pháp này, chúng tôi sử dụng Python để trả về nhiều giá trị bằng cách phân tách chúng bằng dấu phẩy. Python về cơ bản sử dụng một tuple để đạt được điều này.
Mã để đạt được điều này như sau:
#Returning Multiple Values using Tuples def multiple(): operation = "Sum" total = 5+10 return operation, total; operation, total = multiple() print(operation, total) #Output = Sum 15Một sự nhầm lẫn phổ biến ở đây là cú pháp của tuple đòi hỏi một cặp dấu ngoặc (). Mặc dù điều này là đúng, Python không phải lúc nào cũng yêu cầu dấu ngoặc để xác định một tuple.
Sử dụng danh sách Python:
Tương tự như các phương thức trước đó, danh sách cũng có thể được sử dụng để trả về nhiều giá trị. Trong trường hợp bạn không quen thuộc với danh sách, chúng là một tập hợp các mặt hàng. Chúng khá giống với các mảng tuy nhiên chúng có thể được sử dụng để lưu trữ các giá trị của các loại dữ liệu khác nhau.
Vì chúng là một tập hợp các mục, chúng tôi có thể thêm các giá trị vào danh sách và trả lại danh sách.
Mã để trả về nhiều giá trị bằng danh sách:
#Returning Multiple Values using List def multiple(): operation = "Sum" total = 5+10 return [operation, total]; values = multiple() print(values) #Output = ["Sum", 15]Trong phương thức này, bạn sẽ phải sử dụng chỉ mục của danh sách để sử dụng các giá trị riêng lẻ.
Sử dụng từ điển Python:
Trong phương thức trước, việc truy cập một giá trị cụ thể sẽ là một rắc rối. Tuy nhiên, đây sẽ không phải là vấn đề trong khi sử dụng từ điển để trả về nhiều giá trị. Điều này là do chúng tôi có thể sử dụng tên khóa có liên quan và chúng có thể được truy cập dễ dàng.
Mã để làm như vậy như sau:
#Returning Multiple Values using Dictionary def multiple(): values = dict(); values['operation'] = "Sum" values['total'] = 5+10 return values; values = multiple() print(values) #Output = {'operation': 'Sum', 'total': 15}Trong phương thức này, các giá trị được trả về có thể dễ dàng được truy cập trong các khóa của chúng.
Sử dụng lớp dữ liệu Python:
Trong phương thức này, chúng tôi sử dụng các lớp dữ liệu để trả về nhiều giá trị. Các lớp dữ liệu là một phương pháp thêm các phương thức cụ thể vào lớp do người dùng xác định. Phương pháp này đã được giới thiệu trong Python phiên bản 3.7.
Mã để làm như vậy như sau:
result = test() print(result) print(type(result)) # ('abc', 100) # <class 'tuple'> 0Trong phương thức này, các giá trị được trả về có thể dễ dàng được truy cập trong các khóa của chúng.
- Sử dụng lớp dữ liệu Python:
- Trong phương thức này, chúng tôi sử dụng các lớp dữ liệu để trả về nhiều giá trị. Các lớp dữ liệu là một phương pháp thêm các phương thức cụ thể vào lớp do người dùng xác định. Phương pháp này đã được giới thiệu trong Python phiên bản 3.7.
- Hạn chế và cảnh báo - Python trả về nhiều giá trị
- Hai phương pháp đầu tiên, mặc dù được sử dụng rộng rãi, phải được sử dụng một cách thận trọng vì chúng không có tên thích hợp để xác định các giá trị và do đó thường có thể dẫn đến lỗi.