2016-05-25 14 views
4

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

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

λ = lambda 
squared = λ x: x*x 
+0

只是好奇,你为什么要这么做? –

+1

我想创建一个数学外观的Python只是出于美学原因。我喜欢这个Vim插件:https://github.com/ehamberg/vim-cute-python,但想看看我是否可以进一步。 – therealtypon

+3

你可以在你的文本编辑器中做到这一点,但不是在Python本身,因为它是一个关键字。 –

回答

1

至于其他一些用户已经注意到,lambda是Python中的保留字,所以不能被混淆或以同样的方式覆盖该你可以在不改变Python语言的语法的情况下使用函数或变量。但是,您可以使用exec关键字定义一个函数,它自己定义并从字符串表达式中返回一个新的lambda函数。这在一定程度上改变了样式,但顶级行为是相似的。

即:

def λ(expression): 

    local_dictionary = locals() 

    exec("new_lambda = lambda %s" % (expression), globals(), local_dictionary) 

    return local_dictionary["new_lambda"] 

# Returns the square of x. 
y = λ("x : x ** 2") 

# Prints 2^2 = 4. 
print(y(2)) 

这相当于:

# Returns the square of x. 
y = lambda x : x ** 2 

# Prints 2^2 = 4. 
print(y(2))