2016-09-11 8 views
0

が発生し、私はこの機能を "翻訳します"スクリプトとして実行しようとしました(python lambda_stuff.py)問題はありませんでした。 Pythonのシェルを経由して、それを実行しようとしたときしかし、この奇妙なことが起こった:Pythonのラムダ関数 "翻訳" Pythonのラムダ関数を理解しようとしているとき再帰エラー

>>> def power_of_self(y): 
...  return y ** y 
... power_of_self(3) 
File "<stdin>", line 3 
power_of_self(3) 
      ^
SyntaxError: invalid syntax 
>>> print power_of_self(3) 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "<stdin>", line 1, in power_of_self 
File "<stdin>", line 1, in power_of_self 
File "<stdin>", line 1, in power_of_self 
File "<stdin>", line 1, in power_of_self 
**A FEW HUNDRED MORE OF THESE** 
RuntimeError: maximum recursion depth exceeded 

なぜ私のスクリプトの実行には、私のシェルの実行とは異なりましたか? ...には何か関係があるのだろうかと思います。

+1

これは起こってはいけません。関数を終了するために空行がないため、SyntaxErrorを取得しているはずです。このインタプリタセッションのトランスクリプトを編集したことはありますか? – user2357112

+0

ここに[シェルのスナップショット]があります。(https://s11.postimg.org/6ld2wcu4z/Tom_Python_99_53.png) – t0mgs

+1

待って、* SyntaxErrorを取得した後、あなたは引き続きこの関数を使用しようとしました。別のバグがある以前のバージョンの関数を取り上げています。 – user2357112

答えて

3

...は、Pythonシェルが関数の一部としてさらに多くの文を待っていたことを意味します。インデントされたブロックを直接Pythonシェルに入力するときは、関数を終了するために空白行が必要です。

>>> def power_of_self(y): 
...  return y ** y 
... 
>>> power_of_self(3) 
27 
1

あなたの機能はまだシェルで定義されています。余分なヒット関数を呼び出す前にと入力してください。