Return trọng Python là gì?

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:

Hàm trong Python là gì? Cú pháp, thành phần và các loại hàm trong Python như thế nào? Làm sao để tạo hàm trong Python? Những câu hỏi này của bạn sẽ được giải đáp trong bài học Python dưới đây.

Hàm trong Python là gì?

Trong Python, hàm là một nhóm các lệnh có liên quan đến nhau được dùng để thực hiện một tác vụ, nhiệm vụ cụ thể nào đó. Hàm giúp chia chương trình Python thành những khối/phần/mô-đun nhỏ hơn. Khi chương trình Python quá lớn, hoặc cần mở rộng, thì các hàm giúp chương trình có tổ chức và dễ quản lý hơn.

Hàm còn có một tác dụng vô cùng quan trọng nữa là tránh việc phải lặp lại code để thực thi những tác vụ tương tự nhau, giúp code gọn hơn và có thể tái sử dụng.

Tuyển dụng lập trình python lương cao

Cú pháp của hàm Python

def ten_ham[các tham số/đối số]:
 """Chuỗi văn bản để mô tả cho hàm [docstring]"""
 Các câu lệnh

Về cơ bản, một định nghĩa hàm Python sẽ bao gồm các thành phần sau:

  1. Từ khóa def: Đánh dáu sự bắt đầu của tiêu đề hàm.
  2. ten_ham: Là định danh duy nhất dành cho hàm. Việc đặt tên hàm phải tuân thủ theo quy tắc viết tên và định danh trong Python.
  3. Các tham số/đối số: Chúng ta truyền giá trị cho hàm thông qua các tham số này. Chúng là tùy chọn.
  4. Dấu hai chấm [:]: Đánh dấu sự kết thúc của tiêu đề hàm.
  5. docstring: Chuỗi văn bản tùy chọn để mô tả chức năng của hàm.
  6. Các câu lệnh: Một hoặc nhiều lệnh Python hợp lệ tạo thành khối lệnh. Các lệnh này phải có cùng một mức thụt đầu dòng [thường là 4 khoảng trắng].
  7. Lệnh return: Lệnh này là tùy chọn, dùng khi cần trả về giá trị từ hàm

Cách thức làm việc của hàm trong Python:

Ví dụ về hàm Python

Dưới đây là một định nghĩa hàm đơn giản, gồm tên hàm, tham số của hàm, mô tả hàm và một câu lệnh:

def chao[ten]:
 """Hàm này dùng để
 chào một người được truyền
    vào như một tham số""" 
    print["Xin chào, " + ten + "!"]

Gọi hàm trong Python

Khi một hàm đã được định nghĩa, bạn có thể gọi nó từ một hàm khác, chương trình khác hoặc thậm chí tại dấu nhắc lệnh. Để gọi hàm chúng ta chỉ cần nhập tên hàm với những tham số thích hợp là được.

Ví dụ để gọi hàm chao[] vừa định nghĩa bên trên, ta gõ lệnh sau ngay tại dấu nhắc:

>>> chao ["uCode.vn"]

Ta sẽ nhận được kết quả như sau:\

>>>chao ["uCode.vn"]
Xin chào, uCode.vn!
>>>

Docstring trong Python

Chuỗi đầu tiên ngay sau tiêu đề hàm được gọi là docstring [documentation string], nó được dùng để giải thích chức năng cho hàm. Mặc dù docstring là không bắt buộc, nhưng việc bạn giải thích ngắn gọn về chức năng của hàm sẽ giúp người dùng sau, thậm chí là bạn, khi gọi hàm có thể hiểu ngay hàm sẽ làm gì mà không cần phải tìm lại định nghĩa hàm để xem xét.

Việc thêm tài liệu cho code là một thói quen tốt. Chẳng có gì đảm bảo là sau 1 vài tháng quay trở lại bạn nhớ được chi tiết, rõ ràng đoạn code đã viết trước đó mà không có sai sót gì.

Trong ví dụ bên trên chúng ta có một docstring ngay bên dưới tiêu đề hàm. Docstring thường được viết trong cặp 3 dấu ngoặc kép. Chuỗi này sẽ xuất hiện như một thuộc tính doc của hàm.

Để kiểm tra docstring của hàm chao[] bên trên, bạn nhập code sau và chạy thử nhé:

print [chao.__doc__]

Đây là kết quả:

Hàm này dùng để
 chào một người được truyền
    vào như một tham số
>>>

Lệnh return trong hàm Python

Lệnh return thường được dùng để thoát hàm và trở về nơi mà tại đó hàm được gọi.

Cú pháp của lệnh return:

return [danh_sach_bieu_thuc]

Lệnh này có thể chứa biểu thức được tính toán và giá trị trả về. Nếu không có biểu thức nào trong câu lệnh hoặc không có lệnh return trong hàm thì hàm sẽ trả về None.

**Ví dụ về lệnh return: **

def gia_tri_tuyet_doi[so]:
 """Hàm này trả về giá trị tuyệt đối
    của một số nhập vào"""
    if so >= 0: 
    return so 
    else: 
        return -so
# Đầu ra: 5
print[gia_tri_tuyet_doi[5]]
# Đầu ra: 8
print[gia_tri_tuyet_doi[-8]]
# Đầu ra: Giá trị tuyệt đối của số nhập vào
num=int[input["Nhập số cần lấy giá trị tuyệt đối: "]]
print [gia_tri_tuyet_doi[num]]

Khi chạy code trên, ta được kết quả như sau:

5
8
Nhập số cần lấy giá trị tuyệt đối: -7
7 

  20 tài liệu học Python thiết thực để trở thành lập trình viên chuyên nghiệp

  71 trích đoạn code Python cho các vấn đề hàng ngày của bạn

Phạm vi và thời gian tồn tại của các biến

Phạm vi của biến là đoạn chương trình mà ở đó biến được thừa nhận. Các tham số và biến được xác định bên trong một hàm khong thể “nhìn thấy” từ bên ngoài. Do đó, những biến và tham số này chỉ có phạm vi trong hàm.

Thời gian tồn tại của biến là khoảng thời gian mà biến đó xuất hiện trong bộ nhớ. Khi hàm được thực thi thì biến sẽ tồn tại.

Biến bị hủy khi chúng ta thoát khỏi hàm. Hàm không nhớ giá trị của biến trong những lần gọi hàm trước đó.

def ham_in[]:
 x = 15 
    print["Giá trị bên trong hàm:",x]
x = 30
ham_in[]
print["Giá trị bên ngoài hàm:",x]

Trong chương trình trên, ta dùng cùng một biến x, một biến bên trong hàm ham_in[], một biến x ở ngoài và thực hiện lệnh in hai giá trị này để bạn nhận thấy phạm vi của biến. Giá trị của x chúng ta khởi tạo là 30, mặc dù hàm ham_in[] đã thay đổi giá trị của x thành 15, nhưng nó không ảnh hưởng gì đến giá trị của x ở bên ngoài hàm. Khi chạy chương trình ta được kết quả:

def chao[ten]:
 """Hàm này dùng để
 chào một người được truyền
    vào như một tham số""" 
    print["Xin chào, " + ten + "!"]
0

Điều này là do biến x bên trong hàm là khác với biến x bên ngoài hàm. Dù chúng có cùng tên, nhưng thực ra lại là 2 biến khác nhau với phạm vi khác nhau. Biến x trong hàm là biến cục bộ, chỉ có tác dụng trong hàm đó. Biến x bên ngoài hàm có thể nhìn thấy từ bên trong hàm và có phạm vi trên toàn bộ chương trình.

Với biến bên ngoài hàm, ta có thể đọc giá trị của biến ở trong hàm, nhưng không thể thay đổi được giá trị của nó. Để thay đổi giá trị cho các biến kiểu này, chúng phải được khai báo là các biến global bằng cách sử dụng từ khóa global.

Các loại hàm trong Python

Về cơ bản, Python có 2 loại hàm chính là hàm được tích hợp sẵn trong Python và hàm do người dùng định nghĩa. Trong các bài blog tới, chúng ta sẽ tìm hiểu kỹ hơn về 2 loại hàm này.

Chủ Đề