Tôi mặc dù tôi có thể đóng góp, sử dụng một bộ ngắt dòng:
x = lambda x,y: x-y if x<y \
else y-x if y<x \
else 0
Đừng quên điều rất hay là python có thể viết oneliners, như trong ví dụ:
a=b=0; c=b+a; d = a+b**2 #etc etc
Và lambda rất mạnh, nhưng nó không có nghĩa là thay thế toàn bộ 1 chức năng, ý tôi là bạn có thể hack nó như thế nào (ví dụ mượn từ đồng nghiệp ở trên):
makeTag = lambda tagName: "<{}>".format(tagName)
closeTag = lambda tagName: makeTag("/"+str(tagName))
openTag = lambda tagName: makeTag(tagName)
writeHMTLline = lambda tag,content: ""+opetTag(tag)+str(content)+closeTag(tag)
Nhưng bạn có thực sự muốn làm điều đó như thế này? Nó hầu như không thể đọc được sau một thời gian, nó giống như bắt đầu từ sợi dây bắt đầu với kết thúc được làm sáng tỏ.
Lambdas được coi là các chức năng duy nhất, trong bản đồ, lọc và giảm các chức năng trong Lập trình định hướng chức năng (trong số những thứ khác). Ví dụ: lấy các giá trị ký tự của các giá trị là số nguyên và chia hết cho 2
chrDev2 = lambda INT: chr(INT) if isinstance(INT,int) and INT%2==0 else INT
someStringList = map( chrDev2, range(30) )
>>> ['\x00', 1, '\x02', 3, '\x04', 5, '\x06', 7, '\x08', 9, '\n', 11, '\x0c', 13, '\x0e', 15, '\x10', 17, '\x12', 19, '\x14', 21, '\x16', 23, '\x18', 25, '\x1a', 27, '\x1c', 29]
Bạn có thể sử dụng nó như chức năng thể hiện chức năng bằng cách hủy bỏ chức năng phức tạp (hoặc nhiều hơn và một vài lambdas, và đặt nó vào một lambda khác:
def someAnon(*args): return sum(list(args))
defAnon = lambda list: [ x*someAnon(*list) for x in list]
nhưng Python có hỗ trợ expresions theo cách khác: -lets nói rằng bạn có một số hàm được gọi superAwesomeFunction
và hàm đó có thể thực hiện một số công cụ siêu tuyệt vời, bạn có thể gán nó cho một biến bằng cách không gọi nó, như thế này:
SAF = superAwesomeFunction # there is no () at the end,
Vì vậy, bây giờ khi bạn gọi SAF, bạn sẽ gọi superAwgieFunction hoặc phương thức. Nếu bạn tìm kiếm máng thư mục Lib của bạn, bạn có thể thấy rằng hầu hết các __builtin__
mô-đun python được viết theo cách đó. Điều này được thực hiện bởi vì đôi khi bạn sẽ cần một số chức năng thực hiện nhiệm vụ cụ thể không đủ cần thiết để người dùng có thể sử dụng nhưng nó cần thiết cho một số chức năng. Vì vậy, sau đó bạn có một lựa chọn là bạn không thể có 2 hàm với tên "superAw đũaFunction", bạn có thể có "superAw đũaFunctionDagingBasicStuf" và "realSuperAwemmeFunction" và thay vì chỉ đặt "realSuperAwemmeFeft".
Bạn có thể tìm vị trí của các mô-đun đã nhập bằng cách nhập vào bảng điều khiển importedModule.__file__
(ví dụ thực tế import os;os.__file__
) và chỉ cần theo thư mục đó để gửi tệp có tên là importModule.py và mở nó trong trình chỉnh sửa và tìm cách bạn có thể tối đa hóa "kiến thức" của riêng mình.
Tôi hy vọng điều này sẽ giúp bạn và có thể các đồng nghiệp khác gặp rắc rối.