Một chức năng có thể nằm bên trong một chức năng Python khác không?

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 

Chủ Đề