Computer >> Máy Tính >  >> Lập trình >> Python

Functools - Các hàm và hoạt động bậc cao hơn trên các đối tượng có thể gọi bằng Python

Hàm trong Python được cho là có thứ tự cao hơn. Nó có nghĩa là nó có thể được truyền dưới dạng đối số cho một hàm khác và / hoặc cũng có thể trả về một hàm khác. Mô-đun functools cung cấp các tiện ích quan trọng cho các chức năng bậc cao như vậy.

hàm part ()

Hàm này trả về một đối tượng 'một phần' có thể gọi được. Bản thân đối tượng hoạt động giống như một hàm. Hàm part () nhận một hàm khác làm đối số và đóng băng một số phần của đối số của hàm dẫn đến một đối tượng mới có chữ ký đơn giản hóa.

Hàm int () tích hợp sẵn chuyển đổi một số thành một số nguyên thập phân. Chữ ký mặc định của int () là

int(x, base = 10)

Hàm part () có thể được sử dụng để tạo một hàm có thể gọi hoạt động giống như hàm int () trong đó đối số cơ sở được mặc định là hai.

>>> import functools
>>> binint = functools.partial(int, base = 2)
>>> binint('1001')
9

Trong ví dụ sau, một hàm do người dùng xác định, my Chức năng () được sử dụng làm đối số cho một hàm một phần bằng cách đặt giá trị mặc định trên một trong các đối số của hàm gốc.

>>> def myfunction(a,b):
return a*b

>>> partfunction = functools.partial(myfunction,b = 10)
>>> partfunction(10)
100

partmethod ()

Hàm này trả về một bộ mô tả từng phần mới hoạt động giống như một phần ngoại trừ việc nó được thiết kế để sử dụng như một định nghĩa phương thức thay vì có thể gọi trực tiếp.

Hàm cmp_to_key ()

Python 2.x có hàm cmp () để so sánh hai đối tượng. Python 3 đã không dùng nó nữa. Mô-đun functools cung cấp hàm cmp_to_key () để so sánh các đối tượng của các lớp do người dùng xác định có thể được thực hiện

from functools import cmp_to_key

class test:
def __init__(self,x):
self.x = x
def __str__(self):
return str(self.x)
def cmpr( a,b):
if a.x> = b.x: return True
if a.x<b.x: return False
mykey = cmp_to_key(cmpr)
Hàm

Reduce ()

Hàm Reduce () nhận hai đối số, một hàm và một có thể lặp. Tuy nhiên, nó trả về một giá trị duy nhất. Hàm đối số được áp dụng tích lũy hai đối số trong danh sách từ trái sang phải. Kết quả của hàm trong lần gọi đầu tiên trở thành đối số đầu tiên và mục thứ ba trong danh sách trở thành đối số thứ hai. Việc này được lặp lại cho đến khi hết danh sách.

Trong ví dụ dưới đây, hàm mult () được định nghĩa để trả về tích của hai số. Hàm này được sử dụng trong hàm Reduce () cùng với một dải số từ 1 đến 10. Đầu ra là giá trị giai thừa của 10.

import functools
def mult(x,y):
return x*y

num = functools.reduce(mult, range(1,11))
print ('factorial of 10: ',num)

Đầu ra

factorial of 10: 3628800