Các hàm hạng nhất trong Python

Category: Python

Hàm hạng nhất là khái niệm mà trong đó các hàm được coi là công dân hạng nhất. Bằng cách coi các hàm là công dân hạng nhất, Python cho phép bạn viết mã trừu tượng hơn, có thể tái sử dụng và mô-đun hơn. Điều này có nghĩa là các hàm trong các ngôn ngữ như vậy được coi như bất kỳ biến nào khác. Chúng có thể được truyền dưới dạng đối số cho các hàm khác, trả về dưới dạng giá trị từ các hàm khác, được gán cho các biến và được lưu trữ trong các cấu trúc dữ liệu.

Đặc điểm của hàm hạng nhất

  • Gán cho biến : Chúng ta có thể gán hàm cho biến.

  • Được truyền dưới dạng đối số : Chúng ta có thể truyền hàm dưới dạng đối số cho các hàm khác.

  • Trả về từ Hàm : Hàm có thể trả về các hàm khác.

  • Lưu trữ trong cấu trúc dữ liệu: Các hàm có thể được lưu trữ trong các cấu trúc dữ liệu như danh sách, từ điển, v.v.

Gán hàm cho biến

Chúng ta có thể gán một hàm cho một biến và sử dụng biến đó để gọi hàm.

Ví dụ:

def msg(name):
    return f"Hello, {name}!"

# Gán hàm cho một biến
f = msg

# Gọi hàm thông qua biến
print(f("Anurag"))

Đầu ra:

Hello, Anurag

Giải thích:

  • hàm greet được gán cho biến f.

  • Sau đó, f được dùng để gọi hàm, chứng minh rằng các hàm có thể được xử lý giống như bất kỳ biến nào khác.

Truyền hàm như đối số

Các hàm có thể được truyền dưới dạng đối số cho các hàm khác, cho phép sử dụng các hàm bậc cao hơn .

Ví dụ:

def msg(name):
    return f"Hello, {name}!"

def fun1(fun2, name):
    return fun2(name)

# Truyền hàm greet (msg) làm đối số
print(fun1(msg, "Bob"))

Đầu ra:

Hello, Bob!

Giải thích:

  • Hàm fun1 lấy một hàm fun2 khác và một tên làm đối số.

  • Hàm msg được truyền cho fun1, sau đó gọi greet với tên đã cho.

Trả về các hàm từ các hàm khác

Một hàm có thể trả về một hàm khác, cho phép tạo ra các nhà máy hàm.

Ví dụ:

def fun1(msg):
    def fun2():
        return f"Message: {msg}"
    return fun2

# Lấy hàm bên trong
func = fun1("Hello, World!")
print(func())

Đầu ra:

Message: Hello, World!

Giải thích:

  • fun1 định nghĩa fun2 và trả về fun2.

  • func lưu trữ fun2 được trả về, sau đó có thể gọi lại.

Lưu trữ các hàm trong cấu trúc dữ liệu

Các hàm có thể được lưu trữ trong các cấu trúc dữ liệu như danh sách hoặc từ điển .

Ví dụ:

def add(x, y):
    return x + y

def subtract(x, y):
    return x - y

# Lưu trữ trong hàm trong từ điển
d = {
    "add": add,
    "subtract": subtract
}

# Lưu trữ hàm từ từ điển
print(d["add"](5, 3))       
print(d["subtract"](5, 3))

Đầu ra:

8 
2

Giải thích:

  • Các hàm cộng và trừ được lưu trữ trong các phép toán từ điển.

  • Các hàm được truy cập và gọi từ từ điển bằng các phím tương ứng.

Published on Jun 17, 2025