Hướng dẫn higher-order function python
Trong bài này chúng ta sẽ tìm hiểu Higher Order Functions trong Python, qua đó mình cũng nói qua cách sử dụng Decorators, một cách sử dụng khá phổ biến của Higher Order Functions. Show Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. Trước khi tìm hiểu thì mình muốn nhắc các bạn rằng bản thân hàm (function) trong Python là một object, được kế thừa tự động một số phương thức như 1. Higher order function trong Python là gì?Trong Python, một hàm được gọi là higher order function (hàm bậc cao) nếu hàm đó có tham số truyền vào là một hàm khác, và bản thân hàm này cũng có thể return về một function (ta gọi đó là closure function). Sau đây là một số đặc điểm: Bài viết này được đăng tại [free tuts .net]
Ta hãy thử print xem type của một function là gì nhé. def abc(): pass t = abc() print(type(t)) Kết quả: Như vậy biến t chính là một class. 2. Các ví dụ về higher order function trong PythonBây giờ ta sẽ làm một vài ví dụ về những đặc điểm của funciton cấp cao trong Python nhé. Functions là objectsFunction là object nên bạn có thể lưu trữ nó trong một biến, sau đó gọi thông qua biến đó. def sayHi(msg): print(msg) # Gán function vào biến say = sayHi # Gọi function say("freetuts.net") Kết quả: Như trong ví dụ này thì bạn thấy mình đã lưu trữ function sayHi vào biến say, sau đó gọi đến function bằng cú pháp say(). Function là một tham sốTa có thể truyền function vào như là một tham số, bên trong hàm cha sẽ gọi để kích hoạt function tham số đó. # Hàm cha có tham số getMsg là một function def sayHi(getMsg, msg): # Gọi đến hàm getMsg, và truyền tham số cho nó print(getMsg(msg)) # Hàm getMsg có một tham số truyền vào def getMsg(msg): return msg + " freetuts.net" # Chương trình chính msg = getMsg sayHi(msg, "Cường là admin") Kết quả: Return về một functionDạng này ta gọi là closure function nhé các bạn. Nếu bạn muốn tìm hiểu sâu hơn thì hãy đọc bài đó trong series Python nâng cao này nhé. def sayHi(domain): def getMsg(msg): return domain + msg return getMsg hi = sayHi("freetuts.net") print(hi(" admin là Cường")) Kết quả: 3. Điểm qua một chút về DecoratorDecorator là kỹ thuật dùng higher order function để trang trí thêm nội dung cho một function có sẵn. Hãy xem ví dụ dưới đây. def enclose(fun): def wrapper(): print("***************************") fun() print("***************************") return wrapper def myfun(): print("myfun") enc = enclose(myfun) enc() Trong ví dụ này mình đã sử dụng hàm enclose là một decorator, bởi vì mình dùng nó để gọi đến hàm fun(), và đặt hàm func() bên trong hai hàng star. Như vậy khi chạy thì hai hàng star được trang trí thêm cho hàm func (in nội dung my fun). Xem bài viết decorator trong Python để hiểu thêm nhé. Trên là bài hướng dẫn cách sử dụng hàm bậc cao "higher order function trong Python", hy vọng qua bài này sẽ giúp bạn hiểu được cách truyền tham số vào hàm là một tham số khác. Chúc bạn thành công. |