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"
và "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