Khi bạn trả về nhiều giá trị bằng cách sử dụng [các] dấu phẩy, chúng sẽ được trả về ở dạng một bộ. Như được hiển thị trong đoạn mã trên, hai chuỗi
def g[x]:
y0 = x + 1
y1 = x * 3
y2 = y0 ** y3
return {'y0': y0, 'y1': y1 ,'y2': y2}
3 và def g[x]:
y0 = x + 1
y1 = x * 3
y2 = y0 ** y3
return {'y0': y0, 'y1': y1 ,'y2': y2}
4 được trả về bằng một câu lệnh return duy nhấtví dụ 2. Sử dụng từ điển
def name[]:
n1 = "John"
n2 = "Armin"
return {1:n1, 2:n2}
names = name[]
print[names]
đầu ra
{1: 'John', 2: 'Armin'}
Khi bạn trả về các giá trị bằng từ điển, bạn sẽ dễ dàng theo dõi các giá trị được trả về bằng cách sử dụng các phím. Câu lệnh return trả về hai biến ở dạng từ điển
Tuy nhiên, điều này nhanh chóng gặp vấn đề khi số lượng giá trị được trả về tăng lên. Nếu bạn muốn trả về bốn hoặc năm giá trị thì sao? . Việc giải nén chúng ở bất cứ đâu bạn muốn nhận cũng khá xấu
Tùy chọn. Sử dụng từ điển
Bước hợp lý tiếp theo dường như là giới thiệu một số loại 'ký hiệu bản ghi'. Trong Python, cách rõ ràng để thực hiện điều này là sử dụng một
def g[x]:
y0 = x + 1
y1 = x * 3
y2 = y0 ** y3
return {'y0': y0, 'y1': y1 ,'y2': y2}
5Hãy xem xét những điều sau đây
def g[x]:
y0 = x + 1
y1 = x * 3
y2 = y0 ** y3
return {'y0': y0, 'y1': y1 ,'y2': y2}
[Nói rõ hơn, y0, y1 và y2 chỉ có nghĩa là các định danh trừu tượng. Như đã chỉ ra, trong thực tế, bạn sẽ sử dụng các số nhận dạng có ý nghĩa. ]
Bây giờ, chúng ta có một cơ chế nhờ đó chúng ta có thể chiếu ra một phần tử cụ thể của đối tượng được trả về. Ví dụ,
result['y0']
Tùy chọn. Sử dụng một lớp
Tuy nhiên, có một lựa chọn khác. Thay vào đó, chúng ta có thể trả về một cấu trúc chuyên biệt. Tôi đã đóng khung điều này trong ngữ cảnh của Python, nhưng tôi chắc chắn rằng nó cũng áp dụng cho các ngôn ngữ khác. Thật vậy, nếu bạn đang làm việc với C thì đây rất có thể là lựa chọn duy nhất của bạn. Đây đi
class ReturnValue:
def __init__[self, y0, y1, y2]:
self.y0 = y0
self.y1 = y1
self.y2 = y2
def g[x]:
y0 = x + 1
y1 = x * 3
y2 = y0 ** y3
return ReturnValue[y0, y1, y2]
Trong Python, hai phần trước có lẽ rất giống nhau về hệ thống ống nước - xét cho cùng thì
def g[x]:
y0 = x + 1
y1 = x * 3
y2 = y0 ** y3
return {'y0': y0, 'y1': y1 ,'y2': y2}
6 cuối cùng chỉ là các mục nhập trong def g[x]:
y0 = x + 1
y1 = x * 3
y2 = y0 ** y3
return {'y0': y0, 'y1': y1 ,'y2': y2}
7 nội bộ của def g[x]:
y0 = x + 1
y1 = x * 3
y2 = y0 ** y3
return {'y0': y0, 'y1': y1 ,'y2': y2}
0Có một tính năng bổ sung do Python cung cấp cho các đối tượng nhỏ, thuộc tính
def g[x]:
y0 = x + 1
y1 = x * 3
y2 = y0 ** y3
return {'y0': y0, 'y1': y1 ,'y2': y2}
1. Các lớp có thể được thể hiện nhưclass ReturnValue[object]:
__slots__ = ["y0", "y1", "y2"]
def __init__[self, y0, y1, y2]:
self.y0 = y0
self.y1 = y1
self.y2 = y2
Từ Hướng dẫn tham khảo Python
Khai báo
1 lấy một chuỗi các biến thể hiện và dự trữ một khoảng trống vừa đủ trong mỗi thể hiện để giữ một giá trị cho mỗi biến. Không gian được tiết kiệm vìdef g[x]: y0 = x + 1 y1 = x * 3 y2 = y0 ** y3 return {'y0': y0, 'y1': y1 ,'y2': y2}
7 không được tạo cho từng phiên bảndef g[x]: y0 = x + 1 y1 = x * 3 y2 = y0 ** y3 return {'y0': y0, 'y1': y1 ,'y2': y2}
Tùy chọn. Sử dụng một lớp dữ liệu [Python 3. 7+]
Sử dụng Python3. 7, trả về một lớp với các phương thức đặc biệt được thêm tự động, cách gõ và các công cụ hữu ích khác
@dataclass
class Returnvalue:
y0: int
y1: float
y3: int
def total_cost[x]:
y0 = x + 1
y1 = x * 3
y2 = y0 ** y3
return ReturnValue[y0, y1, y2]
Tùy chọn. Sử dụng một danh sách
Một gợi ý khác mà tôi đã bỏ qua đến từ Bill the Lizard
{1: 'John', 2: 'Armin'}0
Đây là phương pháp ít yêu thích nhất của tôi mặc dù. Tôi cho rằng mình bị nhiễm độc khi tiếp xúc với Haskell, nhưng ý tưởng về các danh sách kiểu hỗn hợp luôn khiến tôi cảm thấy khó chịu. Trong ví dụ cụ thể này, danh sách không phải là loại hỗn hợp, nhưng nó có thể là
Một danh sách được sử dụng theo cách này thực sự không đạt được bất cứ điều gì đối với bộ dữ liệu theo như tôi có thể nói. Sự khác biệt thực sự duy nhất giữa danh sách và bộ dữ liệu trong Python là danh sách là , trong khi bộ dữ liệu thì không
Cá nhân tôi có xu hướng thực hiện các quy ước từ lập trình chức năng. sử dụng danh sách cho bất kỳ số phần tử nào cùng loại và bộ dữ liệu cho một số phần tử cố định thuộc loại được xác định trước
Để 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
{1: 'John', 2: 'Armin'}1
Cấu trúc dữ liệu trong Python được dùng để lưu trữ các tập hợp dữ liệu, có thể được trả về từ các hàm. Trong bài viết này, chúng ta sẽ khám phá cách trả về nhiều giá trị từ các cấu trúc dữ liệu này. bộ dữ liệu, danh sách và từ điển
bộ dữ liệu
Một bộ là một dãy có thứ tự, bất biến. Điều đó có nghĩa là, một tuple không thể thay đổi
Ví dụ, sử dụng một tuple để lưu trữ thông tin về một người. tên, tuổi và vị trí của họ
{1: 'John', 2: 'Armin'}2
Đây là cách bạn viết một hàm trả về một bộ
{1: 'John', 2: 'Armin'}3
Lưu ý rằng chúng tôi đã không sử dụng dấu ngoặc đơn trong câu lệnh trả về. Đó là bởi vì bạn có thể trả về một bộ bằng cách tách từng mục bằng dấu phẩy, như trong ví dụ trên
“Thực tế là dấu phẩy tạo nên một bộ, không phải dấu ngoặc đơn,” chỉ ra. Tuy nhiên, với các bộ trống hoặc để tránh nhầm lẫn
Đây là một ví dụ về hàm sử dụng dấu ngoặc đơn
{1: 'John', 2: 'Armin'}20 để trả về một bộ dữ liệu
{1: 'John', 2: 'Armin'}5
Danh sách
Một danh sách là một chuỗi có thứ tự, có thể thay đổi. Điều đó có nghĩa là, một danh sách có thể thay đổi
Bạn có thể sử dụng một danh sách để lưu trữ các thành phố
{1: 'John', 2: 'Armin'}6
Hoặc điểm kiểm tra
{1: 'John', 2: 'Armin'}7
Hãy xem chức năng dưới đây. Nó trả về một danh sách chứa mười số
{1: 'John', 2: 'Armin'}8
Đây là một ví dụ khác. Lần này chúng ta truyền vào một số đối số khi chúng ta gọi hàm
{1: 'John', 2: 'Armin'}9
Rất dễ nhầm lẫn bộ dữ liệu và danh sách. Xét cho cùng, cả hai đều là các thùng chứa lưu trữ các đối tượng. Tuy nhiên, hãy nhớ những điểm khác biệt chính này
- Tuples không thể thay đổi
- Danh sách có thể thay đổi
từ điển
Từ điển chứa các cặp khóa-giá trị được đặt trong dấu ngoặc nhọn
{1: 'John', 2: 'Armin'}21. Mỗi “khóa” có một “giá trị” liên quan. ”
Xem xét từ điển của nhân viên dưới đây. Mỗi tên nhân viên là một “chìa khóa” và vị trí của họ là “giá trị. ”
def g[x]:
y0 = x + 1
y1 = x * 3
y2 = y0 ** y3
return {'y0': y0, 'y1': y1 ,'y2': y2}
1Đây là cách bạn viết một hàm trả về một từ điển với một cặp khóa, giá trị
def g[x]:
y0 = x + 1
y1 = x * 3
y2 = y0 ** y3
return {'y0': y0, 'y1': y1 ,'y2': y2}
2Trong ví dụ trên, “Boston” là khóa và “United States” là giá trị.
Chúng tôi đã bao phủ rất nhiều mặt đất. Điểm mấu chốt là đây. bạn có thể trả về nhiều giá trị từ một hàm Python và có một số cách để làm như vậy
Tôi viết về các kỹ năng lập trình bạn cần phát triển và các khái niệm bạn cần học cũng như những cách tốt nhất để học chúng tại amymhaddad. com
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
Lập trình viên và nhà văn. cách học hiệu quả. com. công cụ lập kế hoạch hàng ngày. com
Nếu bạn đọc đến đây, hãy tweet cho tác giả để cho họ thấy bạn quan tâm. Tweet một lời cảm ơn
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu