将输入的字符串解析为lambda函数(Python)

Chr*_*ger 0 python lambda input type-conversion

如何将字符串输入解析为适当的形式,以使其在lambda函数中作为映射规则执行?

 fx=type(input("Enter a polynomial: "))
Run Code Online (Sandbox Code Playgroud)

这是我的输入,我想输入arbirtray多项式。

f= lambda x: fx
Run Code Online (Sandbox Code Playgroud)

现在,我希望我的lambda函数能够执行输入函数中的字符串,就像它们是正常的映射规则一样x**2

far*_*sil 6

首先input(),如答案所述,在Python 2和Python 3中的行为有所不同。

eval() 是最简单的选项之一:

Python 3

>>> fx = input("Enter a polynomial: ")
Enter a polynomial: x**2 + 2*x + 1
>>> f = lambda x: eval(fx)
>>> f(1)
4
Run Code Online (Sandbox Code Playgroud)

Python 2

>>> fx = raw_input("Enter a polynomial: ")
Enter a polynomial: x**2 + 2*x + 1
>>> f = lambda x: eval(fx)
>>> f(1)
4
Run Code Online (Sandbox Code Playgroud)

但是要小心,因为eval()可以执行任意代码。