Hàm được gọi là hàm bậc cao hơn nếu nó chứa các hàm khác dưới dạng tham số hoặc trả về hàm dưới dạng đầu ra, I.E, các hàm hoạt động với một hàm khác được gọi là hàm bậc cao hơn. Điều đáng biết là hàm bậc cao này có thể áp dụng cho các hàm và phương thức cũng như kết quả là các hàm như một tham số hoặc trả về một hàm. Python quá hỗ trợ các khái niệm về các chức năng bậc cao hơn.Higher Order Function if it contains other functions as a parameter or returns a function as an output i.e, the functions that operate with another function are known as Higher order Functions. It is worth knowing that this higher order function is applicable for functions and methods as well that takes functions as a parameter or returns a function as a result. Python too supports the concepts of higher order functions.
Thuộc tính của các hàm bậc cao hơn:
- Một hàm là một thể hiện của loại đối tượng.
- Bạn có thể lưu trữ chức năng trong một biến.
- Bạn có thể chuyển chức năng như một tham số cho một hàm khác.
- Bạn có thể trả về chức năng từ một hàm.
- Bạn có thể lưu trữ chúng trong các cấu trúc dữ liệu như bảng băm, danh sách,
Chức năng như các đối tượng
Trong Python, một hàm có thể được gán cho một biến. Nhiệm vụ này không gọi hàm, thay vào đó là một tham chiếu đến hàm đó được tạo. Hãy xem xét các ví dụ dưới đây, để hiểu rõ hơn.
Example:
def
shout[text]:
return
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.0
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.1
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.2
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.3
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.4
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.5
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.6
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.7
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.1
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.9
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.3
251
Output:
HELLO HELLO
Trong ví dụ trên, một đối tượng hàm được tham chiếu bởi tiếng hét và tạo tên thứ hai chỉ vào nó, hét lên.
Chuyển chức năng như một đối số cho chức năng khác
Các chức năng giống như các đối tượng trong Python, do đó, chúng có thể được truyền như đối số cho các chức năng khác. Hãy xem xét ví dụ dưới đây, nơi chúng tôi đã tạo một lời chào chức năng lấy chức năng như một đối số.
Example:
def
shout[text]:
return
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.0
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.5
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.6
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.7
Trong ví dụ trên, một đối tượng hàm được tham chiếu bởi tiếng hét và tạo tên thứ hai chỉ vào nó, hét lên.
Chuyển chức năng như một đối số cho chức năng khác
Các chức năng giống như các đối tượng trong Python, do đó, chúng có thể được truyền như đối số cho các chức năng khác. Hãy xem xét ví dụ dưới đây, nơi chúng tôi đã tạo một lời chào chức năng lấy chức năng như một đối số.
def
258
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.1
def hello_decorator[]: . . . hello_decorator = gfg_decorator[hello_decorator]2
def hello_decorator[]: . . . hello_decorator = gfg_decorator[hello_decorator]3
def hello_decorator[]: . . . hello_decorator = gfg_decorator[hello_decorator]4
Output:
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.
return
@gfg_decorator
def hello_decorator[]:
.
.
.
1
def
@gfg_decorator def hello_decorator[]: . . .3
Example:
@gfg_decorator def hello_decorator[]: . . .5
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.6
@gfg_decorator def hello_decorator[]: . . .7
@gfg_decorator def hello_decorator[]: . . .9
Trả lại chức năng
Vì các hàm là đối tượng, chúng ta cũng có thể trả về một hàm từ một hàm khác. Trong ví dụ dưới đây, hàm created_adder trả về hàm adder.
def
def hello_decorator[]: . . . hello_decorator = gfg_decorator[hello_decorator]6
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.1
def
4def
5251
Output:
25
def
def hello_decorator[]:
.
.
.
hello_decorator = gfg_decorator[hello_decorator]
9
Hello, this is before function execution This is inside the function !! This is after function execution0____9
Hello, this is before function execution This is inside the function !! This is after function execution22____53
Hello, this is before function execution This is inside the function !! This is after function execution4
Syntax:
@gfg_decorator def hello_decorator[]: . . .
return
Hello, this is before function execution This is inside the function !! This is after function execution7
def hello_decorator[]: . . . hello_decorator = gfg_decorator[hello_decorator]
Hello, this is before function execution This is inside the function !! This is after function execution8
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.6
def
0def
1def
2Example:
Trang trí
Các nhà trang trí là cách sử dụng phổ biến nhất của các chức năng bậc cao trong Python. Nó cho phép các lập trình viên sửa đổi hành vi của chức năng hoặc lớp. Các nhà trang trí cho phép chúng ta bọc một chức năng khác để mở rộng hành vi của chức năng được bọc, mà không cần sửa đổi vĩnh viễn nó. Trong các bộ trang trí, các chức năng được lấy làm đối số vào một hàm khác và sau đó được gọi là bên trong hàm trình bao bọc.
Hello, this is before function execution This is inside the function !! This is after function execution0
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.1
shout[text]:
6shout[text]:
7def
2Hello, this is before function execution This is inside the function !! This is after function execution0
0Mã trên tương đương với -
Trong mã trên, def
7 là hàm có thể gọi được, sẽ thêm một số mã trên đầu của một số hàm có thể gọi được, hàm def
8 và trả về hàm trình bao bọc.
def
shout[text]:
0
HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT. hi, i am created by a function passed as an argument.1
shout[text]:
6return
4def
2
def
shout[text]:
3
return
9
Output:
Hello, this is before function execution This is inside the function !! This is after function execution
Hello, this is before function execution
This is inside the function !!
This is after function execution
0HI, I AM CREATED BY A FUNCTION PASSED AS AN ARGUMENT.
hi, i am created by a function passed as an argument.
1shout[text]:
6
4def
2 For more information, refer to Decorators in Python.