Return Python là gì

Câu lệnh return sẽ trả về duy nhất một giá trị cụ thể cho caller của nó, trong khi câu lệnh yield có thể trả về một loạt các giá trị. Chúng ta nên sử dụng câu lệnh yield khi muốn lặp qua một kiểu dữ liệu dạng chuỗi/dãy/danh sách để xử lý và tạo ra các kết quả, mà không muốn phải lưu trữ toàn bộ các giá trị kết quả trong bộ nhớ [tức là tính ra được kết quả nào thì trả về luôn chứ không cần phải lưu lại kết quả tại mỗi lần xử lý vào một mảng/danh sách– gây tốn bộ nhớ].

Câu lệnh yield thường được sử dụng trong các generator functions [hàm tạo] của ngôn ngữ Python. Các generator functions được khai báo giống như hàm bình thường, nhưng mỗi khi nó cần tạo ra/sinh ra/trả về một giá trị, nó sẽ thực hiện điều đó bằng từ khóa yield thay vì return. Nếu bên trong phần thân hàm của một hàm được khai báo bằng từ khóa def có chứa câu lệnh yield, hàm này sẽ tự động trở thành một hàm tạo – generator function.

# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: //www.facebook.com/cafedevn
#Instagram: //instagram.com/cafedevn
#Twitter: //twitter.com/CafedeVn
#Linkedin: //www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------


# A Python program to generate squares from 1 
# to 100 using yield and therefore generator 
  
# An infinite generator function that prints 
# next square number. It starts with 1 
def nextSquare[]: 
    i = 1; 
  
    # An Infinite loop to generate squares  
    while True: 
        yield i*i                 
        i += 1  # Next execution resumes  
                # from this point      
  
# Driver code to test above generator  
# function 
for num in nextSquare[]: 
    if num > 100: 
         break    
    print[num] 

Kết quả in ra là:

1
4
9
16
25
36
49
64
81
100

Nguồn và Tài liệu tiếng anh tham khảo:

  • w3school
  • python.org
  • geeksforgeeks

Tài liệu từ cafedev:

  • Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
  • Ebook về python tại đây.
  • Các series tự học lập trình khác

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Trong Python, chúng ta có thể trả về nhiều giá trị từ một hàm, có nhiều cách để làm được điều này, chúng ta sẽ cùng tìm hiểu ngay sau đây.

Nội dung chính

1. Sử dụng Object – đối tượng

Cách này tương tự như trong ngôn ngữ C/C++ và Java, chúng ta có thể tạo ra một class [trong C là struct] để lưu giữ được nhiều giá trị, và trả về một đối tượng của class đó.

# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: //www.facebook.com/cafedevn
#Instagram: //instagram.com/cafedevn
#Twitter: //twitter.com/CafedeVn
#Linkedin: //www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------

# A Python program to return multiple  
# values from a method using class 
class Test: 
    def __init__[self]: 
        self.str = "cafedev.vn"
        self.x = 20   
  
# This function returns an object of Test 
def fun[]: 
    return Test[] 
      
# Driver code to test above method 
t = fun[]  
print[t.str] 
print[t.x] 

Kết quả in ra là:

cafedev.vn
20

Tiếp theo, một số phương pháp thú vị hơn nữa để trả về nhiều giá trị, dành cho những người chuyển từ C++/Java sang Python sẽ được trình bày.

2. Sử dụng Tuple

Tuple là một chuỗi các phần tử được phân tách nhau bởi dấu phẩy. Nó có thể được tạo ra bằng cách sử dụng hoặc không sử dụng [] đều được. Các Tuples đều là immutable – không thay đổi được. Ví dụ dưới đây sẽ mô tả cụ thể về tuple và list [danh sách].

# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: //www.facebook.com/cafedevn
#Instagram: //instagram.com/cafedevn
#Twitter: //twitter.com/CafedeVn
#Linkedin: //www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------

# A Python program to return multiple  
# values from a method using tuple 
  
# This function returns a tuple 
def fun[]: 
    str = "cafedev.vn"
    x   = 20
    return str, x;  # Return tuple, we could also 
                    # write [str, x] 
  
# Driver code to test above method 
str, x = fun[] # Assign returned tuple 
print[str] 
print[x] 

Kết quả in ra là:

cafedev.vn
20

3. Sử dụng List

List là một kiểu dữ liệu giống với mảng các phần tử, được tạo ra bằng cặp dấu ngoặc vuông. List khác với array ở chỗ, chúng có thể chứa được các phần tử thuộc nhiều kiểu dữ liệu khác nhau. List thì khác với tuple, bởi vì list là mutable [thay đổi được].

# -----------------------------------------------------------
#Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
#@author cafedevn
#Contact: cafedevn@gmail.com
#Fanpage: //www.facebook.com/cafedevn
#Instagram: //instagram.com/cafedevn
#Twitter: //twitter.com/CafedeVn
#Linkedin: //www.linkedin.com/in/cafe-dev-407054199/
# -----------------------------------------------------------

# A Python program to return multiple  
# values from a method using list 
  
# This function returns a list 
def fun[]: 
    str = "cafedev.vn"
    x = 20   
    return [str, x];   
  
# Driver code to test above method 
list = fun[]  
print[list] 

Kết quả in ra:

['cafedev.vn', 20]

4. Sử dụng Dictionary

Dictionary trong Python tương tự với kiểu dữ liệu hash hoặc kiểu map trong các ngôn ngữ khác, ví dụ dưới đây sẽ mô tả cách sử dụng dictionary để trả về nhiều kết quả từ một hàm:


# A Python program to return multiple  
# values from a method using dictionary 
  
# This function returns a dictionary 
def fun[]: 
    d = dict[];  
    d['str'] = "cafedev.vn"
    d['x']   = 20
    return d 
  
# Driver code to test above method 
d = fun[]  
print[d] 

Kết quả in ra là:

{'x': 20, 'str': 'cafedev.vn'}

Nguồn và Tài liệu tiếng anh tham khảo:

  • w3school
  • python.org
  • geeksforgeeks

Tài liệu từ cafedev:

  • Full series tự học Python từ cơ bản tới nâng cao tại đây nha.
  • Ebook về python tại đây.
  • Các series tự học lập trình khác

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chủ Đề