1. ホーム
  2. python

[解決済み] PythonにMultiline Lambdaはない。なぜダメなのか?

2022-03-23 18:08:22

質問

Pythonの他の構文構成と構文的に衝突するから、Pythonでは多行ラムダは追加できないという話を聞いたことがあります。 今日、バスの中でこのことについて考えていたのですが、多行ラムダが衝突するPythonの構文を1つも思いつかないことに気づきました。 私はPythonをよく理解しているので、これには驚きました。

さて、Guidoが多行ラムダを言語に含めない理由があったと思いますが、好奇心で言うと、多行ラムダを含めると曖昧になる状況とはどんなものでしょうか? それとも、Pythonが複数行のラムダを許可しない他の理由があるのでしょうか?

どのように解決するのですか?

以下を見てください。

map(multilambda x:
      y=x+1
      return y
   , [1,2,3])

を返すラムダなのでしょうか? (y, [1,2,3]) (したがって、map はパラメータを 1 つしか受け取らないので、エラーになります)? それとも y ? それとも、改行のカンマの位置がずれているので、構文エラーになるのでしょうか?Pythonはどうやってあなたが何をしたいかを知るのでしょうか?

括弧の中では、インデントはpythonにとって重要ではないので、一義的に複数行を扱うことはできないのです。

これは簡単なもので、もっとたくさんの例があるでしょう。