Các hàm lồng nhau [hoặc bên trong, lồng nhau] là các hàm mà chúng ta định nghĩa bên trong các hàm khác để truy cập trực tiếp vào các biến và tên được xác định trong hàm kèm theo. Các hàm lồng nhau có nhiều công dụng, chủ yếu để tạo bao đóng và trang trí
Trong hướng dẫn này, chúng tôi sẽ
tìm hiểu cách cung cấp các chức năng đóng gói và ẩn khỏi truy cập bên ngoài
viết các hàm trợ giúp để làm cho mã dễ sử dụng lại
thực hiện đóng cửa để duy trì trạng thái giữa các cuộc gọi
hãy tạo các bộ trang trí để thêm hành vi vào các chức năng hiện có
Tạo các hàm lồng nhau trong Python
Hãy bắt đầu với một ví dụ mã chứa hàm lồng nhau
def outer_func[]: def inner_func[]: print["Hello, World!"] inner_func[] outer_func[]
ĐẦU RA
Chào thế giới
Trong mã này, chúng tôi xác định nội bộ để hiển thị một chuỗi. Để làm điều này, chúng tôi gọi trên dòng cuối cùng. inner_func[] outside_func[] Xin chào, Thế giới. inner_func[] outside_func[]
Công dụng chính của các hàm bên trong là khả năng dễ dàng truy cập các biến và đối tượng từ một hàm [“bên ngoài”] đã đăng ký. Hàm kèm theo cung cấp một không gian tên có sẵn cho hàm lồng nhau
def outer_func[who]: def inner_func[]: print[f"Hello, {who}"] inner_func[] outer_func["World!"]
ĐẦU RA
Chào thế giới
Bây giờ chúng ta có thể truyền một chuỗi làm đối số cho hàm và sẽ tham chiếu đến đối số này thông qua tên. Tên này được định nghĩa trong phạm vi cục bộ. Các tên chúng tôi đã xác định trong phạm vi cục bộ của hàm bên ngoài được định nghĩa là. Họ không phải là người địa phương từ một quan điểm. bên ngoài_func[] bên trong_func[] ai bên ngoài_func[] không cục bộ bên trong_func[]
Một ví dụ khác về hàm lồng nhau phức tạp hơn
def factorial[number]: if not isinstance[number, int]: raise TypeError["The number must be whole."] if number < 0: raise ValueError["The number must be non-negative."] #Factorial calculation def inner_factorial[number]: if number