如何在 Python 中重写“lambda”?

the*_*pon 5 python

如何重新定义语法级别lambda在Python中重新定义语法级别运算符?

\n\n

例如,我希望能够做到这一点:

\n\n
\xce\xbb = lambda\nsquared = \xce\xbb x: x*x\n
Run Code Online (Sandbox Code Playgroud)\n

Eri*_*erd 3

正如其他一些用户所指出的,lambda是 Python 中的保留关键字,因此在不更改 Python 语言语法的情况下,不能像函数或变量一样使用别名或重写。但是,您可以定义一个函数,该函数本身使用关键字从字符串表达式定义并返回新的 lambda 函数exec。这会稍微改变样式,但顶层行为是相似的。

\n\n

那是:

\n\n
def \xce\xbb(expression):\n\n    local_dictionary = locals()\n\n    exec("new_lambda = lambda %s" % (expression), globals(), local_dictionary)\n\n    return local_dictionary["new_lambda"]\n\n# Returns the square of x.\ny = \xce\xbb("x : x ** 2") \n\n# Prints 2 ^ 2 = 4.\nprint(y(2)) \n
Run Code Online (Sandbox Code Playgroud)\n\n

这相当于:

\n\n
# Returns the square of x.\ny = lambda x : x ** 2 \n\n# Prints 2 ^ 2 = 4.\nprint(y(2)) \n
Run Code Online (Sandbox Code Playgroud)\n