HomeLập trìnhPythonHàm lồng nhau...

Hàm lồng nhau trong Python


Một hàm lồng nhau chỉ đơn giản là một hàm bên trong một hàm khác và đôi khi được gọi là “hàm bên trong”. Có nhiều lý do khiến bạn muốn sử dụng các hàm lồng nhau và chúng ta sẽ xem xét những lý do phổ biến nhất trong bài viết này.

Cách xác định hàm lồng nhau

Để xác định một hàm lồng nhau, chỉ cần khởi tạo một hàm khác trong một hàm bằng cách sử dụng def từ khóa:

def greeting(first, last):
  # nested helper function
  def getFullName():
    return first + " " + last

  print("Hi, " + getFullName() + "!")

greeting('Quincy', 'Larson')

Đầu ra:

Hi, Quincy Larson!

Như bạn có thể thấy, lồng nhau getFullName chức năng có quyền truy cập vào bên ngoài greeting tham số của hàm, firstlast. Đây là trường hợp sử dụng phổ biến cho các hàm lồng nhau–để phục vụ như một hàm trợ giúp nhỏ cho một hàm bên ngoài phức tạp hơn.

Lý do nên sử dụng các hàm lồng nhau

Mặc dù có nhiều lý do hợp lệ để sử dụng các hàm lồng nhau, trong số những lý do phổ biến nhất là đóng gói và đóng/hàm xuất xưởng.

Đóng gói dữ liệu

Đôi khi bạn muốn ngăn không cho một chức năng hoặc dữ liệu mà nó có quyền truy cập được truy cập từ các phần khác trong mã của bạn, vì vậy bạn có thể đóng gói nó trong một chức năng khác.

Đọc thêm  Dòng mới của Python và cách in Python mà không cần dòng mới

Khi bạn lồng một hàm như thế này, nó sẽ ẩn khỏi phạm vi toàn cầu. Vì hành vi này, đóng gói dữ liệu đôi khi được gọi là ẩn dữ liệu hoặc bảo mật dữ liệu. Ví dụ:

def outer():
  print("I'm the outer function.")
  def inner():
    print("And I'm the inner function.")
  inner()

inner()

Đầu ra:

Traceback (most recent call last):
  File "main.py", line 16, in <module>
    inner()
NameError: name 'inner' is not defined

Trong đoạn mã trên, inner chức năng chỉ có sẵn từ bên trong chức năng outer. Nếu bạn cố gọi inner từ bên ngoài chức năng, bạn sẽ gặp lỗi ở trên.

Thay vào đó, bạn phải gọi outer chức năng như vậy:

def outer():
  print("I'm the outer function.")
  def inner():
    print("And I'm the inner function.")
  inner()

outer()

Đầu ra:

I'm the outer function.
And I'm the inner function.

đóng cửa

Nhưng điều gì sẽ xảy ra nếu hàm bên ngoài trả về chính hàm bên trong, thay vì gọi nó như trong ví dụ trên? Trong trường hợp đó, bạn sẽ có cái được gọi là đóng cửa.

Sau đây là các điều kiện bắt buộc phải đáp ứng để tạo bao đóng trong Python:

Đây là những điều kiện bạn cần để tạo một bao đóng trong Python:

1. Phải có hàm lồng nhau

2. Hàm bên trong phải tham chiếu đến một giá trị được xác định trong phạm vi kèm theo

3. Hàm kèm theo phải trả về hàm lồng nhau

– Nguồn: https://stackabuse.com/python-nested-functions/

Đây là một ví dụ đơn giản về việc đóng cửa:

def num1(x):
  def num2(y):
    return x + y
  return num2

print(num1(10)(5))

Đầu ra:

15

Các bao đóng giúp có thể truyền dữ liệu vào các hàm bên trong mà không cần chuyển chúng đến các hàm bên ngoài trước với các tham số như greeting ví dụ ở đầu bài. Chúng cũng cho phép gọi hàm bên trong từ bên ngoài hàm bên ngoài đóng gói. Tất cả điều này với lợi ích của việc đóng gói/ẩn dữ liệu đã đề cập trước đó.

Đọc thêm  Cách xây dựng gói Python đầu tiên của bạn

Bây giờ bạn đã hiểu cách thức và lý do lồng các hàm trong Python, hãy ra ngoài và lồng chúng với những chức năng tốt nhất.



Zik.vn – Biên dịch & Biên soạn Lại

spot_img

Create a website from scratch

Just drag and drop elements in a page to get started with Newspaper Theme.

Buy Now ⟶

Bài viết liên quang

DMCA.com Protection Status