簡體   English   中英

Python lambda函數“翻譯”導致遞歸錯誤

[英]Python lambda function “translation” causes recursion error

在嘗試理解python lambda函數時,我“翻譯”了此函數:

s = lambda y: y ** y; s(3)  

進入此常規的已定義函數:

def power_of_self(y):
    return y ** y
power_of_self(3)

當我嘗試將其作為腳本運行( python lambda_stuff.py )時,我沒有問題。 但是,當嘗試通過Python Shell運行它時,發生了以下奇怪的事情:

>>> 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

為什么我的腳本執行與外殼程序執行不同? 我想知道...是否與之有關。

...表示python shell正在等待更多語句作為函數的一部分。 直接從python shell輸入縮進塊時,需要用空行來結束該函數。

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

您的函數仍在外殼中定義。 調用該函數之前,請打一個額外的Enter鍵

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM