Menu
CoddyTech

Hàm làm đối số

Bài học 3 trên 12 trong khóa học Trình trang trí trong Python của Coddy.

Trong Python, ta có thể truyền một hàm (function) làm đối số cho một hàm khác.

Ví dụ:

def add_numbers(a, b):
    return a + b

def multiply_numbers(a, b):
    return a * b

def calculate(func, a, b):
    return func(a, b)

result = calculate(add_numbers, 2, 3)
print(result) # Đầu ra: 5

result = calculate(multiply_numbers, 2, 3)
print(result) # Đầu ra: 6

Trong ví dụ này, ta định nghĩa hai hàm: add_numbers và multiply_numbers.

Sau đó, ta định nghĩa hàm thứ ba có tên là calculate. Hàm này nhận một hàm func làm đối số đầu tiên, cùng với hai đối số bổ sung là a và b.

Khi gọi calculate, ta truyền tên hàm muốn dùng (add_numbers hoặc multiply_numbers) làm đối số func, cùng với hai số muốn thực hiện phép tính.

Sau đó, hàm calculate gọi hàm func với hai số và trả về kết quả.

Trong ví dụ trên, ta gọi calculate hai lần: lần thứ nhất với add_numbers và lần thứ hai với multiply_numbers.

Lần gọi thứ nhất trả về tổng của 2 và 3 (bằng 5), còn lần gọi thứ hai trả về tích của 2 và 3 (bằng 6).

challenge icon

Thử thách

Dễ

Viết một hàm có tên list_operator, nhận một danh sách số nguyên và một hàm toán tử làm đối số.

Hàm operator nhận hai số nguyên làm đầu vào và trả về một số nguyên.

Hàm list_operator cần áp dụng hàm toán tử cho tất cả các cặp số nguyên liền kề trong danh sách và trả về một danh sách mới chứa kết quả.

Ví dụ về cách hàm hoạt động:

>>> numbers = [1, 2, 3, 4, 5]
>>> result = list_operator(numbers, operator.add)
>>> result
[3, 5, 7, 9]

>>> numbers = [10, 20, 30, 40]
>>> result = list_operator(numbers, operator.mul)
>>> result
[200, 600, 1200]

Ràng buộc

  • Danh sách đầu vào luôn chứa ít nhất hai số nguyên.
  • Hàm toán tử luôn nhận hai số nguyên làm đầu vào và trả về một số nguyên.

Lưu ý! Mình đã cung cấp hàm toán tử, bạn không cần tạo hàm này, chỉ cần sử dụng.

Tự làm thử

Tất cả bài học trong Trình trang trí trong Python

Tự luyện tập: Trình biên dịch Python online