Я хоч міг би зробити свій внесок, використовую вимикач ліній:
x = lambda x,y: x-y if x<y \
else y-x if y<x \
else 0
Не забувайте дуже приємну річ, що python вміє писати oneliners, як, наприклад:
a=b=0; c=b+a; d = a+b**2 #etc etc
І лямбда дуже потужна, але вона не призначена для заміни 1 цілої функції, я маю на увазі, що ви можете її зламати (наприклад, запозичення колеги вище):
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)
Але чи справді ви хочете зробити це так? Це здебільшого нечитабельно через деякий час, це як доїхати до початку мотузки, починаючи з нерозкрученого кінця.
Лямбди виконуються як єдині функції, для картографування, фільтрування та зменшення функцій у функціонально орієнтованому програмуванні (серед іншого). Наприклад, отримання знакових значень значень, цілих чисел і ділених на 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]
Ви можете використовувати його як функцію вираження функцій, визначивши складну функцію (або більше і кілька лямбда, і помістивши її всередині іншої лямбда:
def someAnon(*args): return sum(list(args))
defAnon = lambda list: [ x*someAnon(*list) for x in list]
але Python має підтримку виразів функцій по-іншому: -леті говорять, що у вас є якась функція, яка називається, superAwesomeFunction
і ця функція може робити надзвичайно чудові речі, ви можете призначити її змінній, не викликаючи її, як це:
SAF = superAwesomeFunction # there is no () at the end,
Отже, коли ви зателефонуєте в SAF, ви зателефонуєте на superAwesomeFunction або метод. Якщо здійснити пошук у папці Lib, ви зможете виявити, що більшість __builtin__
модулів python написані саме так. Це робиться тому, що іноді вам знадобляться деякі функції, які виконують певну задачу, яка не є достатньою, щоб користуватися користувачем, але вона необхідна для декількох функцій. Тож у вас є вибір, ви не можете мати 2 функції з назвою "superAwesomeFunction", ви можете мати "superAwesomeFunctionDoingBasicStuf" і "realSuperAwesomeFunction", а не просто ставити змінну "realSuperAwesomeFunction" у "superAwesomeFunction", і ви все готові.
Ви можете знайти розташування імпортованих модулів, ввівши в консоль importedModule.__file__
(реальний приклад import os;os.__file__
) і просто дотримуйтесь цього каталогу, щоб подати ім'я importModule.py і відкрити його в редакторі та знайти, як ви можете максимально використовувати свої власні знання.
Я сподіваюся, що це допоможе вам і, можливо, іншим колегам у біді.