私は貢献できましたが、ラインブレーカーを使用します:
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)
しかし、あなたは本当にこのようにしたいですか?しばらく経つとほとんど読めなくなり、解き明かされていないロープから始まります。
ラムダは、マップ、フィルター、および機能指向プログラミング(特に)のリデュース関数で、1つだけの関数として記述されています。たとえば、整数で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]
複雑な関数(または複数のlambdasを定義し、別のlambda内に配置することにより、関数式関数として使用できます。
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フォルダーを検索すると、ほとんどのpython __builtin__
モジュールがそのように書かれていることがわかります。これは、ユーザーが使用するのに十分ではないが、いくつかの機能に必要な特定のタスクを実行する機能が必要になる場合があるためです。したがって、「superAwesomeFunction」という名前の2つの関数を使用することはできず、「superAwesomeFunctionDoingBasicStuf」および「realSuperAwesomeFunction」を選択し、「superAwesomeFunction」変数に「realSuperAwesomeFunction」を入れるだけで済みます。
console importedModule.__file__
(実際の例import os;os.__file__
)を入力することでインポートされたモジュールの場所を見つけることができ、importedModule.pyと呼ばれるファイルにそのディレクトリをたどってエディターでそれを開き、独自の「知識」を最大化する方法を見つけます。
これがあなたや他の同僚のトラブルに役立つことを願っています。