Hướng dẫn is it good to have nested functions in python? - có tốt không khi có các hàm lồng nhau trong python?

Hãy cùng xem xét các ví dụ về lợi ích của các chức năng python lồng nhau và cách sử dụng chúng & nbsp; để đóng cửa đóng cửa và trang trí.to encapsul closures, and decorators.

Các hàm lồng nhau [hoặc bên trong, lồng nhau] là các hàm mà chúng tôi xác định bên trong các chức năng khác để truy cập trực tiếp các biến và tên được xác định trong hàm kèm theo. Các chức năng lồng nhau có nhiều cách sử dụng, chủ yếu để tạo ra các thiết bị đóng cửa và trang trí.

Tại sao chúng ta cần chức năng lồng nhau?

  • Một hàm lồng nhau có thể truy cập các hàm, biến, hằng số, loại, lớp, v.v. khác trong cùng một phạm vi hoặc trong bất kỳ phạm vi bao quanh nào, mà không chuyển tham số rõ ràng, điều này đơn giản hóa rất nhiều dữ liệu vào và ra khỏi hàm lồng nhau. Điều này thường được phép cho cả đọc và viết.

  • Có tệ khi xác định một hàm trong một hàm không?

  • Thực sự tốt khi khai báo một chức năng bên trong một chức năng khác. Đây là những nhà trang trí tạo ra đặc biệt hữu ích. Tuy nhiên, theo nguyên tắc thông thường, nếu hàm này phức tạp [hơn 10 dòng], có thể là một ý tưởng tốt hơn để khai báo nó ở cấp độ mô -đun.

  • Python có hỗ trợ các chức năng lồng nhau không?

Python hỗ trợ khái niệm về "hàm lồng nhau" hoặc "hàm bên trong", chỉ đơn giản là một hàm được xác định bên trong một hàm khác. Trong phần còn lại của bài viết, chúng tôi sẽ sử dụng từ "hàm bên trong" và "hàm lồng nhau" thay thế cho nhau.

def outer_func[]:
    def inner_func[]:
        print["Hello, World!"]
    inner_func[]
outer_func[]

Đầu ra

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 các chức năng khỏi quyền truy cập bên ngoài

Viết các chức năng của người trợ giúp để làm cho mã dễ dàng sử dụng lại

def outer_func[who]:
    def inner_func[]:
        print[f"Hello, {who}"]
    inner_func[]
outer_func["World!"]

Đầu ra

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 các chức năng khỏi quyền truy cập bên ngoài

Một ví dụ khác về chức năng 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 

Bài Viết Liên Quan

Chủ Đề