如何重新定义语法级别lambda在Python中重新定义语法级别运算符?
例如,我希望能够做到这一点:
\n\n\xce\xbb = lambda\nsquared = \xce\xbb x: x*x\nRun Code Online (Sandbox Code Playgroud)\n
正如其他一些用户所指出的,lambda是 Python 中的保留关键字,因此在不更改 Python 语言语法的情况下,不能像函数或变量一样使用别名或重写。但是,您可以定义一个函数,该函数本身使用关键字从字符串表达式定义并返回新的 lambda 函数exec。这会稍微改变样式,但顶层行为是相似的。
那是:
\n\ndef \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)) \nRun 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)) \nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
876 次 |
| 最近记录: |