Bạn có thể trả về nhiều biến trong Python không?

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ất

ví 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}
5

Hã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}
0

Có 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

def g[x]:
  y0 = x + 1
  y1 = x * 3
  y2 = y0 ** y3
  return {'y0': y0, 'y1': y1 ,'y2': y2}
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ản

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}
2

Trong 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

Amy Haddad

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

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 .

Phương thức có thể trả về nhiều biến không?

Bạn chỉ có thể trả về một giá trị trong Java. Nếu cần, bạn có thể trả về nhiều giá trị bằng cách sử dụng mảng hoặc đối tượng .

Làm cách nào tôi có thể trả lại nhiều giá trị từ một lần trả về?

Chúng ta có thể trả về nhiều hơn một giá trị từ một hàm bằng cách sử dụng phương thức gọi là “gọi theo địa chỉ” hoặc “gọi theo tham chiếu” . Trong hàm Invigner, chúng ta sẽ sử dụng 2 biến để lưu kết quả, và hàm sẽ lấy dữ liệu kiểu con trỏ. Vì vậy, chúng ta phải chuyển địa chỉ của dữ liệu.

Chủ Đề