Câu hỏi phỏng vấn Python
Câu hỏi

Tại sao các hàm lồng nhau trong Python không được gọi là closures?

Câu trả lời

Trong Python, một hàm lồng nhau (nested function) thực sự có thể trở thành một closure, nhưng không phải mọi hàm lồng nhau đều là closure. Sự khác biệt chính giữa một hàm lồng nhau thông thường và một closure nằm ở "môi trường lexicographical" mà hàm đó có thể truy cập.

Hàm Lồng Nhau (Nested Function):

Một hàm lồng nhau là một hàm được định nghĩa bên trong một hàm khác. Hàm lồng nhau có thể truy cập các biến của hàm bên ngoài mà nó được định nghĩa.

def outer_function():
    outer_var = "I am outside!"

    def inner_function():
        print(outer_var)

    inner_function()

outer_function()  # In ra: I am outside!

Trong ví dụ trên, inner_function là một hàm lồng nhau bên trong outer_function và có thể truy cập biến outer_var của hàm bên ngoài.

Closure:

Một closure trong Python là một hàm lồng nhau mà "nhớ" môi trường mà nó được tạo ra, ngay cả khi hàm bên ngoài đã kết thúc thực thi. Điều này có nghĩa là closure có t...

senior

senior

Gợi ý câu hỏi phỏng vấn

expert

Hãy định nghĩa Singleton một cách đơn giản, lấy ví dụ?

middle

Introspection/Reflection là gì và Python có hỗ trợ không?

entry

Có những cách nào để sửa một string trong Python?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào