Thư viện cà ri Python

Trong toán học và khoa học máy tính, currying là kỹ thuật chia nhỏ việc đánh giá một hàm có nhiều đối số thành việc đánh giá một chuỗi các hàm có một đối số. Currying cũng được sử dụng trong khoa học máy tính lý thuyết, bởi vì việc chuyển đổi nhiều mô hình đối số thành các mô hình đối số đơn lẻ thường dễ dàng hơn

Thư viện cà ri Python

Đào tạo Python trực tiếp

Thư viện cà ri Python

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

đăng ký tại đây

Thành phần chức năng

Ta xác định thành phần h của hai hàm f và g

$h(x) = g(f(x))$

trong ví dụ Python sau

Sự kết hợp của hai chức năng là một quá trình xâu chuỗi trong đó đầu ra của chức năng bên trong trở thành đầu vào của chức năng bên ngoài

def compose(g, f):
    def h(x):
        return g(f(x))
    return h

Chúng tôi sẽ sử dụng chức năng soạn thảo của chúng tôi trong ví dụ tiếp theo. Giả sử chúng ta có một nhiệt kế hoạt động không chính xác. Nhiệt độ chính xác có thể được tính bằng cách áp dụng chức năng điều chỉnh lại các giá trị nhiệt độ. Giả sử thêm rằng chúng ta phải chuyển đổi các giá trị nhiệt độ từ độ C sang độ F. Chúng tôi có thể làm điều này bằng cách áp dụng soạn thảo cho cả hai chức năng

def celsius2fahrenheit(t):
    return 1.8 * t + 32
def readjust(t):
    return 0.9 * t - 0.5
convert = compose(readjust, celsius2fahrenheit)
print(convert(10), celsius2fahrenheit(10))

ĐẦU RA

44.5 50.0

Hợp thành của hai hàm số nói chung là không giao hoán, i. e. soạn(chỉnh độ 2 độ, điều chỉnh lại) khác với soạn(điều chỉnh lại, độ 2 độ, điều chỉnh)

convert2 = compose(celsius2fahrenheit, readjust)
print(convert2(10), celsius2fahrenheit(10))

ĐẦU RA

47.3 50.0

def celsius2fahrenheit(t):
    return 1.8 * t + 32
def readjust(t):
    return 0.9 * t - 0.5
convert = compose(readjust, celsius2fahrenheit)
print(convert(10), celsius2fahrenheit(10))
4 không phải là một giải pháp cho vấn đề của chúng tôi, bởi vì nó không điều chỉnh lại nhiệt độ ban đầu của nhiệt kế mà là các giá trị Fahrenheit đã biến đổi

Chuyển đổi tiền tệ ví dụ

Trong chương về Hàm ma thuật, chúng ta đã có một bài tập về chuyển đổi tiền tệ

Đào tạo Python trực tiếp

Thư viện cà ri Python

Thưởng thức trang này?

Nhìn thấy. Tổng quan về các khóa học Python trực tiếp

Các khóa học trực tuyến sắp tới

Khóa học nâng cao chuyên sâu

Python dành cho kỹ sư và nhà khoa học

đăng ký tại đây

"sáng tác" với các đối số tùy ý

Hàm

def celsius2fahrenheit(t):
    return 1.8 * t + 32
def readjust(t):
    return 0.9 * t - 0.5
convert = compose(readjust, celsius2fahrenheit)
print(convert(10), celsius2fahrenheit(10))
5 mà chúng ta vừa định nghĩa chỉ có thể sao chép bằng các hàm một đối số. Chúng ta có thể tổng quát hóa chức năng của mình để nó có thể đối phó với tất cả các chức năng có thể, cùng với một ví dụ sử dụng hàm có hai tham số

def compose(g, f):
    def h(*args, **kwargs):
        return g(f(*args, **kwargs))
    return h

________số 8

ĐẦU RA

Normal (healthy weight)

Hàm Currying với số lượng đối số tùy ý

Một câu hỏi thú vị vẫn còn. Làm cách nào để cà ri một hàm trên một số tham số tùy ý và không xác định?

Chúng ta có thể sử dụng một hàm lồng nhau để có thể "cà ri" (tích lũy) các đối số. Chúng ta sẽ cần một cách để nói hàm tính toán và trả về giá trị. Nếu các chức năng được gọi với các đối số, chúng sẽ được thực hiện, như chúng ta đã nói. Nếu chúng ta gọi hàm mà không có bất kỳ đối số nào thì sao? . Chúng tôi cũng có thể làm sạch danh sách với các giá trị tích lũy

Python có cà ri không?

Cà ri trong Python . Và sử dụng nó như một vật trang trí. Mặc dù cà ri có thể hữu ích trong nhiều tình huống, nhưng điều quan trọng cần lưu ý là những hạn chế của nó. Trong cách thực hiện ở trên, currying yêu cầu các hàm phải có một số lượng đối số cố định. We can define a curry wrapper in Python. And use it as a decorator. While currying can be helpful in many situations, it's important to note its limitations. In the implementation above, currying requires functions to have a fixed number of arguments.

Sự khác biệt giữa cà ri và ứng dụng một phần là gì?

Câu trả lời đơn giản. Cà ri. Cho phép bạn gọi một hàm, chia nó thành nhiều lần gọi, cung cấp một đối số cho mỗi lần gọi. Ứng dụng một phần. Cho phép bạn gọi một hàm, chia nó thành nhiều lần gọi, cung cấp nhiều đối số cho mỗi lần gọi.

Cà ri có sử dụng đóng cửa không?

Hàm Curried được xây dựng bằng cách xâu chuỗi các bao đóng và trả về đồng thời các hàm bên trong của chúng ngay lập tức.

Các hàm bậc cao hơn trong Python là gì?

Trong hàm bậc cao, hàm có thể hoạt động như một phần tử tức thì của một loại đối tượng . Trong hàm bậc cao, chúng ta có thể trả về một hàm là kết quả của một hàm khác. Trong hàm bậc cao, chúng ta có thể truyền một hàm dưới dạng tham số hoặc đối số bên trong một hàm khác.