Hướng dẫn python class closure - đóng cửa lớp python

Hướng dẫn python class closure - đóng cửa lớp python

Tìm hiểu về Closure trong Python

Giống như các vòng lặp lồng nhau, các hàm cũng có thể được lồng vào nhau. Về cơ bản, phương pháp ràng buộc dữ liệu với một hàm mà không cần phải thực sự truyền chúng làm tham số cho hàm thì được gọi là Closure. Nói một cách khác, closure là hàm được tạo, hay lồng vào bên trong một hàm khác. Về cơ bản, phương pháp ràng buộc dữ liệu với một hàm mà không cần phải thực sự truyền chúng làm tham số cho hàm thì được gọi là Closure. Nói một cách khác, closure là hàm được tạo, hay lồng vào bên trong một hàm khác. 

Closures có thể truy cập các biến có trong phạm vi chức năng bên ngoài và truy cập các biến này ngay cả sau khi hàm bên ngoài đã hoàn thành việc thực thi. Để hiểu rõ hơn về hàm closure, trước tiên chúng ta hãy xem phạm vi hoạt động của chúng như thế nào trong các hàm lồng nhau.

>>> Xem thêm: Lỗi trong Python - Cách xác định lỗi trong Python Lỗi trong Python - Cách xác định lỗi trong Python

Phạm vi các biến trong hàm lồng nhau

Trong hàm lồng nhau của Python, các hàm đi kèm có thể truy cập các biến trong phạm vi bao quanh nó. Ví dụ như sau:

def outer(name):(name):

  # this is the enclosing function# this is the enclosing function

   def inner():def inner():

      # this is the enclosed function# this is the enclosed function

      # the inner function accessing the outer function's variable 'name'# the inner function accessing the outer function's variable 'name'

       print(name)(name)

   inner()()

# call the enclosing function

outer('Information')('Information')

Kết quả nhận được 

Information

Trong ví dụ trên, bạn sẽ thấy khi hàm bên ngoài được gọi, biến name nhận giá trị Information. Hàm bên trong có thể truy cập giá trị của biến này, khi hàm bên trong được gọi, ‘Information’ sẽ được in ra. Đây chính là phạm vi hoạt động của các hàm lồng nhau. Điểm chính mà bạn cần ghi nhớ là các hàm được bao quanh có thể truy cập được các biến của các hàm bao quanh. 

>>> Tham khảo: Khóa học lập trình PythonKhóa học lập trình Python

Python Closure

Trong ví dụ trên, chúng ta đã gọi hàm inner bên trong hàm outer. Hàm inner sẽ trở thành một closure khi chúng ta trả lại hàm inner thay vì gọi chúng. Vì vậy, ta có thể có một closure nếu:

- Bạn có một hàm lồng nhau, tức là một hàm nằm trong một hàm khác.

- Hàm lồng nhau tham chiếu đến một biến của hàm bên ngoài

- Hàm bao quanh trả về hàm enclosed 

Ví dụ:

def outer(name):

  # this is the enclosing function

   def inner():

      # this is the enclosed function

      # the inner function accessing the outer function's variable 'name'

        print(name)

# call the enclosing function

# call the enclosing function

Kết quả nhận được 

myFunction()

Information

Information

Trong ví dụ trên, bạn sẽ thấy khi hàm bên ngoài được gọi, biến name nhận giá trị Information. Hàm bên trong có thể truy cập giá trị của biến này, khi hàm bên trong được gọi, ‘Information’ sẽ được in ra. Đây chính là phạm vi hoạt động của các hàm lồng nhau. Điểm chính mà bạn cần ghi nhớ là các hàm được bao quanh có thể truy cập được các biến của các hàm bao quanh. 

>>> Tham khảo: Khóa học lập trình Python

Python Closure

Trong ví dụ trên, chúng ta đã gọi hàm inner bên trong hàm outer. Hàm inner sẽ trở thành một closure khi chúng ta trả lại hàm inner thay vì gọi chúng. Vì vậy, ta có thể có một closure nếu:

- Bạn có một hàm lồng nhau, tức là một hàm nằm trong một hàm khác.

- Hàm lồng nhau tham chiếu đến một biến của hàm bên ngoài

- Hàm bao quanh trả về hàm enclosed 

Ví dụ: