私は最近、Python 3.5.1の学習を開始しました。現在、lambda
という表現を試しています。私は以下の簡単な方法を設定しようとしました。なぜこのラムダ式を返すと文字列になりますか?
def sum_double(a, b):
return lambda a, b: a+b if a != b else (a+b)*2, a, b
行うことになっているすべてはa
がb
に等しい場合a
とb
の合計を返し、2倍の和であるが、代わりに私は、このような出力が得られます。
コード:
print(sum_double(1, 2))
print(sum_double(2, 3))
print(sum_double(2, 2))
出力:
(<function sum_double.<locals>.<lambda> at 0x000001532DC0FA60>, 1, 2)
(<function sum_double.<locals>.<lambda> at 0x000001532DC0FA60>, 2, 3)
(<function sum_double.<locals>.<lambda> at 0x000001532DC0FA60>, 2, 2)
私はこの間違っているのでしょうか?なぜこれが起こっているのですが、それが可能であれば、ラムダ式を使って私の望む機能を達成するにはどうしたらいいですか?
あなたがここにラムダを使用しているのはなぜ?ラムダは関数なので、関数から関数を返すことになります。 –
@MorganThrappそれは[すべての機能を停止しました](https://en.wikipedia.org/wiki/Turtles_all_the_way_down)です! –
@MorganThrappラムダでできることを見て、ラムダとその行動を完全に理解することができます。 – pianoisland