Điều gì xảy ra khi bạn trả về nhiều giá trị trong Python?
Là lập trình viên, chúng ta thường gặp các tình huống cần trả về nhiều giá trị từ hàm. Python cung cấp cho chúng ta một số cách để làm điều này (Có. Nhiều hơn một cách. ) và mong đợi “chúng tôi”, các lập trình viên, chọn một cái phù hợp nhất với trường hợp sử dụng của chúng tôi Show
Chúng ta hãy tiếp tục và xem những phương pháp đó là gì và khi nào thì sử dụng phương pháp nào. Cheat-Sheet. Trả về nhiều giá trị từ các hàm trong PythonPhương thức Khi nào nên sử dụng This1. Phân tách các giá trị bằng phương pháp dấu phẩyBest khi trả về tối đa 3 giá trị2. Việc sử dụng Bộ dữ liệu được đặt tên* trả về một số lượng lớn giá trị (hơn 3)* làm cho mã dễ đọc hơn trong khi vẫn duy trì hiệu suất3. Đóng gói các giá trị vào dữ liệu có thể thay đổi của Dicts* * trả về một số lượng lớn giá trị (hơn 3)4. Đóng gói các giá trị vào Danh sách* dữ liệu được sắp xếp * dữ liệu có thể lập chỉ mục * dữ liệu có thể thay đổi5. Đóng gói các giá trị vào Lớp tùy chỉnh trả về các giá trị có liên quan chặt chẽ có thể hưởng lợi từ việc trở thành một lớp Đừng lo lắng nếu bảng này chưa có ý nghĩa, vì bảng này dành cho những người chỉ đến đây để làm mới những kỷ niệm của họ. Mỗi phương pháp trên được giải thích trong phần còn lại của bài viết này với sự trợ giúp của một số ví dụ Phương pháp số 1. Phân tách các giá trị bằng dấu phẩy (Cách tốt nhất để trả về Tối đa 3 giá trị)Chúng ta hãy bắt đầu với phương pháp tốt nhất.
Như bạn có thể thấy, hàm tính_diện tích_n_perimeter() chỉ trả về diện tích và chu vi trong Dòng 4 bằng cú pháp
Về cơ bản, tất cả những gì chúng ta đã làm ở đây là phân tách các giá trị được trả về bằng dấu phẩy. Đơn giản như vậy. Đây là cú pháp yêu thích của tôi vì nó rất đơn giản và trực quan Khi nào sử dụng phương pháp nàyNếu bạn đang trả về một số lượng nhỏ giá trị, chẳng hạn như nhỏ hơn hoặc bằng 3, thì hãy sử dụng phương pháp này. Ví dụ: nếu Dòng-6 của Ví dụ #1 được thay đổi từ
đến
Sau đó, thay vì nhận được đầu ra
chúng tôi sẽ nhận được
đó sẽ là một lỗi lớn
Một ghi chú bên Nerdy. Theo quan điểm của Python, chúng tôi vẫn trả về một giá trị duy nhấtPython, giống như nhiều ngôn ngữ lập trình khác, được xây dựng để chỉ trả về một giá trị. Hãy xem phiên phiên dịch sau
Thành ngữ này được gọi là “Multiple Assignment”, về cơ bản là gán các giá trị cho nhiều giá trị cùng một lúc Đằng sau hậu trường, Python thực sự sử dụng kiểu dữ liệu “Tuple” để biến điều kỳ diệu này thành hiện thực
(Một Tuple trong thuật ngữ đơn giản là một danh sách không đổi, không thể thay đổi sau khi được khai báo)
Như bạn có thể thấy, chúng ta đã sử dụng cùng một cú pháp chính xác và khi chúng ta kiểm tra kiểu của biến c thì nó thực sự là một bộ Tương tự như vậy, hàm của chúng tôi calcul_area_n_perimeter(10, 5) trả về một bộ duy nhất chứ không phải nhiều giá trị ________số 8Có thể khi bạn học Python, bạn sẽ sử dụng các bộ dữ liệu như hình bên dưới
Nhưng những niềng răng này là hoàn toàn tùy chọn. Bất kỳ giá trị nào được phân tách bằng dấu phẩy đều là các bộ trong Python. Trong thực tế, ngay cả đây là một tuple 0Một trường hợp chắc chắn bạn sẽ cần niềng răng là khi bạn đang tạo một bộ gồm các bộ như hình bên dưới 1Trừ khi chúng tôi thực hiện "gán nhiều" hoặc "trả về nhiều giá trị", cách tốt nhất là sử dụng dấu ngoặc nhọn bất cứ khi nào bạn sử dụng bộ dữ liệu để thông báo rõ ràng cho người đọc rằng bạn đang sử dụng bộ dữ liệu vì điều này giúp cải thiện khả năng đọc Một cách sử dụng khác của bộ dữ liệu là
Trong trường hợp này, ngay cả khi bạn trả về nhiều hơn 3 giá trị, bạn vẫn có thể sử dụng Bộ dữ liệu vì việc giải nén các giá trị đã sắp xếp sẽ ít bị lỗi hơn Đôi khi, bạn có thể gặp tình huống muốn trả về nhiều hơn 3 giá trị không được sắp xếp. Hãy xem chúng ta có thể làm gì trong những tình huống đó trong phần tiếp theo Phương pháp số 2. Sử dụng Bộ dữ liệu được đặt tên (Cách tốt nhất để trả về hơn 3 giá trị)Như chúng ta đã thấy ở trên trong Phương pháp # 1, các bộ dữ liệu là một cách tuyệt vời để trả về nhiều giá trị từ một hàm, nhưng mọi thứ có thể vượt khỏi tầm kiểm soát rất nhanh nếu chúng ta gửi nhiều hơn 3 giá trị Điều này là do việc giải nén nó ở bên nhận sẽ rất dễ xảy ra lỗi và có thể dẫn đến các lỗi trong mã, do đó có thể dẫn đến lãng phí rất nhiều giờ cho việc gỡ lỗi Là những người chuyên nghiệp, chúng ta phải luôn nhận thức được các công cụ mà ngôn ngữ lập trình cung cấp cho chúng ta (trong trường hợp này là Python) và đảm bảo chọn đúng công cụ cho đúng công việc “Công cụ” có thể giải quyết vấn đề của chúng ta ở đây là lớp có tên là “Bộ dữ liệu được đặt tên” Dựa theo
Trước tiên chúng ta hãy thử nghiệm một chút với các bộ dữ liệu được đặt tên. Hãy xem phiên phiên dịch bên dưới 2Như bạn có thể thấy, chúng ta có thể truy cập các mục bên trong bộ có tên bằng cách
Ngoài việc cung cấp cho chúng tôi chức năng này, các bộ dữ liệu được đặt tên cũng nhẹ và không yêu cầu nhiều bộ nhớ hơn so với phiên bản "không được đặt tên" thông thường của các bộ dữ liệu Bây giờ chúng ta đã học một chút về Named-Tuples, hãy xem một ví dụ về cách chúng ta có thể sử dụng chúng trong các chương trình của mình 3Như bạn có thể thấy ở trên, chúng tôi đã chỉnh sửa Ví dụ # 1 để sử dụng têntuple thay thế. Đây
Đơn giản như thế Khi nào thì sử dụng phương pháp này?Phương pháp này tốt nhất khi
Nhược điểm của phương pháp nàytêntuple có thể không phải là sự lựa chọn tốt nhất của bạn nếu
Bạn không thể làm những điều đó với các bộ dữ liệu vì về cơ bản chúng là các danh sách không đổi Nhưng đừng lo lắng, vì khi những tình huống như vậy xảy ra, chúng tôi có phương pháp 3 và 4 để giúp chúng tôi Phương pháp số 3. Đóng gói các giá trị vào Dicts (Cách tốt nhất để gửi các giá trị cần thay đổi)Hãy xem chương trình dưới đây 4Khi chúng ta sử dụng dicts chúng ta có thể
5Tôi để bạn thử xem điều gì sẽ xảy ra khi bạn thực hiện tương tự ở trên với các bộ dữ liệu và bộ dữ liệu có tên Một ưu điểm khác của việc sử dụng từ điển là bạn có thể thêm các trường vào từ điển được trả về mà không vi phạm mã hiện có. (Tôi chắc chắn rằng những độc giả là những lập trình viên có kinh nghiệm sẽ đánh giá cao tính chất tuyệt vời này. ) Phương pháp số 4. Đóng gói các giá trị vào Danh sách (Cách tốt nhất để gửi dữ liệu có thể thay đổi không cần tên)Hãy xem ví dụ bên dưới để biết cách sử dụng danh sách để trả về nhiều giá trị 6Chạy mã này sẽ cho một đầu ra như thế này 7Khi nào thì sử dụng phương pháp này?Phương pháp sử dụng danh sách này rất hữu ích khi bạn có một số dữ liệu
Ví dụ trên chỉ là một ví dụ thô sơ về tình huống như vậy Nhưng hãy nhớ rằng, một tuple luôn thích hợp hơn một danh sách khi khả năng biến đổi không phải là một yêu cầu Phương pháp số 5. Đóng gói các giá trị vào các lớp Tùy chỉnh (Cách tốt nhất để gửi dữ liệu có liên quan chặt chẽ)Phương pháp tiếp theo là tạo một lớp tùy chỉnh, đóng gói dữ liệu vào một đối tượng và gửi đối tượng đó Hãy xem ví dụ dưới đây 8Nếu lớp của bạn không cần bất kỳ phương thức nào, bạn cũng có thể sử dụng các lớp dữ liệu do Python cung cấp. Bằng cách này, bạn có thể nói rõ ràng rằng lớp này không có bất kỳ phương thức nào Ví dụ dưới đây cho thấy làm thế nào điều này có thể được thực hiện 9Khi nào thì sử dụng phương pháp này?Bạn có thể sử dụng các phương pháp trên khi cần nhóm dữ liệu lại với nhau thành một lớp duy nhất Quyết định sử dụng lớp thông thường hay lớp dữ liệu tùy thuộc vào trường hợp sử dụng của bạn. Nếu bạn không thấy việc sử dụng các hàm thành viên, tôi khuyên bạn nên sử dụng lớp dữ liệu thay vì lớp thông thường Bảng tất cả các phương phápĐây là bảng cheat một lần nữa từ đầu bài viết một lần nữa. Tôi hy vọng khoảng thời gian này bạn sẽ có thể hiểu rõ hơn về nó Trả về có thể trả về nhiều giá trị Python không?Bạn có thể trả về nhiều giá trị từ một hàm trong Python . Để làm như vậy, hãy trả về cấu trúc dữ liệu chứa nhiều giá trị, chẳng hạn như danh sách chứa số dặm chạy mỗi tuần. Cấu trúc dữ liệu trong Python được sử dụng để lưu trữ các bộ sưu tập dữ liệu, có thể được trả về từ các hàm.
Chúng ta có thể trả về 3 giá trị trong Python không?Trong Python, chúng ta có thể trả về nhiều giá trị từ một hàm .
Trả về có thể có nhiều giá trị không?Nếu chúng ta muốn hàm trả về nhiều giá trị của cùng một kiểu dữ liệu, chúng ta có thể trả con trỏ về mảng của kiểu dữ liệu đó . Chúng ta cũng có thể làm cho hàm trả về nhiều giá trị bằng cách sử dụng các đối số của hàm. |