Tôi có thể trả về nhiều giá trị từ một hàm trong Python không?

1] Sử dụng đối tượng. Điều này cũng tương tự với C/C++ và Java, chúng ta có thể tạo một lớp [trong C là struct] để chứa nhiều giá trị và trả về một đối tượng của lớp

# Một chương trình Python trả về nhiều
# giá trị từ một phương thức sử dụng lớp
lớp kiểm tra
def __init__[bản thân]
bản thân. str = "thợ săn"
bản thân. x = 20

# Hàm này trả về một đối tượng Test
chắc chắn vui vẻ[]
trả lại Bài kiểm tra []

# Mã trình điều khiển để kiểm tra phương pháp trên
t = vui vẻ[]
in [t. str]
in [t. x]
đầu ra

thợ cắt tóc
20
Dưới đây là các phương pháp thú vị dành cho ai đó chuyển đổi thế giới C++/Java

2] Sử dụng Tuple. Tuple là một chuỗi các mục được phân tách bằng dấu phẩy. Nó được tạo ra có hoặc không có []. Tuples là bất biến. Xem phần này để biết chi tiết về Tuple và danh sách

# Một chương trình Python trả về nhiều
# giá trị từ một phương thức sử dụng tuple

# Hàm này trả về một bộ
chắc chắn vui vẻ[]
str = "thợ săn"
x = 20
trả về str, x;
# viết [str, x]

# Mã trình điều khiển để kiểm tra phương pháp trên
str, x = fun[] # Gán bộ trả về
in[str]
in[x]
đầu ra

thợ cắt tóc
20

3] Sử dụng danh sách. Một danh sách giống như một mảng các mục được tạo bằng dấu ngoặc vuông. Chúng khác với mảng vì chúng có thể chứa các mục thuộc các loại khác nhau. Danh sách khác với bộ dữ liệu vì chúng có thể thay đổi

# Một chương trình Python trả về nhiều
# giá trị từ một phương thức sử dụng danh sách

# Hàm này trả về một danh sách
chắc chắn vui vẻ[]
str = "thợ săn"
x = 20
trả về [str, x];

# Mã trình điều khiển để kiểm tra phương pháp trên
danh sách = vui vẻ[]
in [danh sách]
đầu ra

['prutor', 20]

4] Sử dụng từ điển. Từ điển tương tự như hàm băm hoặc bản đồ trong các ngôn ngữ khác. Xem cái này để biết chi tiết về từ điển

# Một chương trình Python trả về nhiều
# giá trị từ một phương thức sử dụng từ điển

# Hàm này trả về một từ điển
chắc chắn vui vẻ[]
d = dict[];
d['str'] = "thảo mộc. ai"
d['x'] = 20
trả lại d

# Mã trình điều khiển để kiểm tra phương pháp trên
d = vui vẻ[]
in[d]
đầu ra

{'x'. 20, 'str'. 'thợ cắt tỉa. ai'}

5] Sử dụng Lớp dữ liệu [Python 3. 7+]. Trong Trăn 3. 7 trở lên, Lớp dữ liệu có thể được sử dụng để trả về một lớp với các phương thức duy nhất được thêm tự động. Mô-đun Lớp dữ liệu có một trình trang trí và các chức năng để tự động thêm các phương thức đặc biệt đã tạo, chẳng hạn như __init__[] và __repr__[] trong các lớp do người dùng định nghĩa

Hàm Python có thể trả về nhiều biến. Các biến này có thể được lưu trữ trực tiếp trong các biến. Một hàm không bắt buộc phải trả về một biến, nó có thể trả về 0, một, hai hoặc nhiều biến

Đây là thuộc tính riêng của Python, các ngôn ngữ lập trình khác như C++ hay Java mặc định không hỗ trợ tính năng này

khóa học liên quan. Hoàn thành khóa học & bài tập lập trình Python

Thí dụ

Giới thiệu

Các biến được định nghĩa trong hàm chỉ được biết trong hàm. Đó là do phạm vi của biến. Nói chung, đó không phải là vấn đề, trừ khi bạn muốn sử dụng đầu ra của hàm trong chương trình của mình

Trong trường hợp đó, bạn có thể trả về các biến từ một hàm. Trong trường hợp đơn giản nhất, bạn có thể trả về một biến duy nhất

1
2
3
def complexfunction[a,b]:
sum = a +b
return sum

Gọi hàm với hàm phức tạp [2,3] và đầu ra của nó có thể được sử dụng hoặc lưu

Nhưng nếu bạn có nhiều biến trong một hàm mà bạn muốn truy cập thì sao?

nhiều trở lại

Tạo một hàm getPerson[]. Như bạn đã biết một hàm có thể trả về một biến nhưng cũng có thể trả về nhiều biến

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 "John""Armin" được trả về bằng một câu lệnh return

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

Chẳng hạn, hãy tạo một hàm lấy hai số làm đối số. Hàm này trả về tổng, hiệu, nhân và chia giữa hai số này

Đây là cách nó trông trong mã

def operate[a, b]:
    sum = a + b
    diff = a - b
    mul = a * b
    div = a / b
    return sum, diff, mul, div

Bây giờ bạn có thể gọi hàm này cho hai số và gán giá trị trả về cho các biến

n1 = 5
n2 = 10

sum, diff, mul, div = operate[n1, n2]

print[
    f"The sum is {sum}\n"
    f"The difference is {diff}\n"
    f"The multiplication gives {mul}\n"
    f"The division gives {div}\n"
]

Điều này dẫn đến kết quả sau đây được in trong bảng điều khiển

The sum is 15
The difference is -5
The multiplication gives 50
The division gives 0.5

Trả về nhiều giá trị hoạt động như thế nào trong Python

Trong phần trước, bạn đã học cách trả về nhiều giá trị bằng cách phân tách các giá trị bằng dấu phẩy

Nhưng tại sao và nó hoạt động như thế nào?

Bộ dữ liệu trong Python

Mã ví dụ hoạt động vì nó trả về một tuple

Trong trường hợp bạn không biết tuple là gì, hãy xem bài viết chuyên sâu này. Tóm lại, một bộ là một nhóm gồm 0 hoặc nhiều phần tử

Chẳng hạn, đây là một ví dụ về bộ ba giá trị đại diện cho một điểm 3D

coords = [1, 1, 3]

Lưu ý rằng các bộ dữ liệu Python không phải lúc nào cũng cần dấu ngoặc đơn

Ví dụ: bạn có thể viết điểm 3D ở trên dưới dạng

________số 8_______

Điều này tạo ra cùng một bộ ba giá trị đại diện cho một điểm 3D

Cách truy cập giá trị Tuple trong Python

Để truy cập và lưu trữ một giá trị từ một bộ dữ liệu, bạn có thể truy cập nó giống như cách bạn truy cập một giá trị từ danh sách. Nói cách khác, sử dụng toán tử [] với chỉ số

Ví dụ: hãy lưu trữ các điểm 3D vào các biến x, y và z

coords = 1, 1, 3

x = coords[0]
y = coords[1]
z = coords[2]

print[x, y, z]

Điều này dẫn đến đầu ra sau trong bảng điều khiển

1 1 3

Điều này hoạt động tốt, nhưng có một cách dễ dàng hơn cho mục đích cụ thể này

Phá hủy Tuple trong Python

Bạn có thể sử dụng phá hủy bộ dữ liệu để truy cập các giá trị bộ dữ liệu và lưu trữ chúng vào các biến

Phá hủy bộ có nghĩa là bạn khai báo một loạt các biến được phân tách bằng dấu phẩy trong một dòng và gán từng giá trị bộ cho biến tương ứng. Điều này giúp bạn tiết kiệm các dòng mã trong khi nó cũng làm cho ý định rất rõ ràng

Hãy để tôi chỉ ra những gì tôi có ý nghĩa

Chẳng hạn, trong ví dụ trước, bạn đã lưu tọa độ 3D x, y và z trên các dòng riêng biệt bằng toán tử []. Thay vì làm theo cách này, bạn có thể sử dụng tuple destructuring như một tốc ký

coords = 1, 1, 3

x, y, z = coords

print[x, y, z]

Do đó, mỗi tọa độ trong điểm 3D được gán cho một biến riêng

1 1 3

Như bạn có thể thấy, giá trị đầu tiên của bộ dữ liệu được gắn vào biến x, giá trị thứ hai đến y và giá trị thứ ba đến z

Bây giờ bạn đã hiểu cách các bộ dữ liệu được tạo và cách các giá trị được đọc từ chúng

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

Để trả về nhiều giá trị từ một hàm, hãy trả về các giá trị dưới dạng một bộ. Để sau đó truy cập/lưu trữ các giá trị này vào các biến, hãy sử dụng tuple destructuring

Nếu bây giờ bạn nhìn vào ví dụ bạn đã thấy trong phần giới thiệu

def operate[a, b]:
    sum = a + b
    diff = a - b
    mul = a * b
    div = a / b
    return sum, diff, mul, div

Bạn nhận ra hàm này trả về một bộ gồm bốn giá trị. Để truy cập bốn giá trị này, bạn sử dụng cấu trúc lại tuple. Đây là giao diện của nó trong mã

n1 = 5
n2 = 10

sum, diff, mul, div = operate[n1, n2]

print[
    f"The sum is {sum}\n"
    f"The difference is {diff}\n"
    f"The multiplication gives {mul}\n"
    f"The division gives {div}\n"
]

đầu ra

The sum is 15
The difference is -5
The multiplication gives 50
The division gives 0.5

Bây giờ các giá trị bộ trả về được lưu trữ trong các biến sum, diff, mul và div

Việc hủy cấu trúc một bộ trả về theo cách này rất tiện lợi. Bạn không cần sử dụng toán tử truy cập dấu ngoặc vuông để chọn thủ công các giá trị từ bộ dữ liệu. Thay vào đó, cú pháp phá hủy sẽ giải quyết vấn đề đó

Phần kết luận

Để trả về nhiều giá trị từ một hàm trong Python, hãy trả về một bộ giá trị

Như bạn có thể biết, một bộ là một nhóm các giá trị được phân tách bằng dấu phẩy. Bạn có thể tạo một bộ có hoặc không có dấu ngoặc đơn. Để truy cập/lưu trữ nhiều giá trị được trả về bởi một hàm, hãy sử dụng cấu trúc tuple

Chủ Đề