Cộng đồng chia sẻ tri thức Lib24.vn

Kiểu dữ liệu Function trong Python - Return

Gửi bởi: Phạm Thọ Thái Dương 20 tháng 11 2020 lúc 15:27:35


Mục lục
* * * * *

Vấn đề

Giả sử bạn viết một hàm xử lí một công việc và bạn muốn sao lưu kết quả sau khi xử lí xong ra một biến. Nhưng bạn lại không thể làm điều đó. Vì nếu tạo ra một biến và lưu ngay trong hàm thì như ta đã biết, nó không thể sử dụng được ở mức toàn chương trình (global).

Giá mà bạn có thể ném cái dữ liệu sau khi xử lí xong ra ngoài nhỉ?

Có đấy, hầu như mọi ngôn ngữ lập trình bây giờ điều cho phép làm điều đó và đương nhiên Python không phải ngoại lệ.

Giới thiệu lệnh return

Đây là lệnh chỉ sử dụng được ở trong hàm (nếu sử dụng ở ngoài hàm sẽ có nhắc lỗi)

SyntaxError: 'return' outside function1

Lệnh return có cú pháp như sau

return [object]

Ở đây, object là một đối tượng bất kì của một lớp nào đó, có thể là số (number), chuỗi (string), list, tuple, hàm (sẽ biết rõ hơn khi tìm hiểu decorator), lớp (class) hoặc thậm chí là bỏ trống – trường hợp bỏ trống thì object return về được tính là None.

Khi return được gọi, hàm được kết thúc và kết quả được trả ra ngoài. Kết quả trả ra ngoài nên được đưa cho một biến nào đó hứng, nếu không thì coi như bạn gọi hàm không để làm gì.

def cal_rec_per(width, height):
    per = (width + height) * 2
    return per

rec_1_width = 5
rec_1_height = 3

# khởi tạo một biến để hứng kết quả
rec_1_per = cal_rec_per(rec_1_width, rec_1_height)

print(rec_1_per)

# trường hợp này là khi bạn không cần tái sử dụng nó ở lần sau
print(cal_rec_per(7, 4))
123456789101112131415
def _return_ter_func():
    print('chúng ta sử dụng return để ngắt hàm')
    # dòng dưới đây tương tự như bạn viết return None
    return
    print('Hàm print này dĩ nhiên không được gọi')

none = _return_ter_func()
print(type(none))
123456789

Dùng return để trả về nhiều giá trị một lúc

Với Python, việc bạn có thể return nhiều giá trị một lúc bản chất nó không nằm ở câu lệnh Python, mà là do Python thiết kế đặc biệt để có thể unpack các object trả về. Bạn hãy xem ví dụ về khai báo sau đây

>>> one, two, three = 'how', 'Kteam', 69
>>> one
'how'
>>> two
'Kteam'
>>> three
69
>>> h, o, w = ('k', 'team', 96) # ở đây, cũng có thể sử dụng list hoặc một container bất kì
>>> h, o, w
('k', 'team', 96)
1234567891011

Tận dụng điều trên, ta có thể “return nhiều giá trị cùng một lúc”

def cal_rec_area_per(width, height):
    perimeter = (width + height) * 2
    area = width * height
    return perimeter, area

rec_width = 3
rec_height = 9
rec_per, rec_area = cal_rec_area_per(rec_width, rec_height)

print(rec_per, rec_area)
1234567891011

Được cập nhật: 10 giờ trước (12:58:14) | Lượt xem: 1700

Các bài học liên quan