将变量转换为lambda中另一个变量的类型

den*_*icz 1 python lambda python-2.7

如果我有以下变量:

x = 100.0
y = "100.0"
Run Code Online (Sandbox Code Playgroud)

我想将其转换y为任何类型x,但尝试通过lambda进行转换。

DSM*_*DSM 6

如果存在type的实例创建者,该实例创建者接受type x的单个参数y并执行正确的操作,则可以调用type(x)(y)

>>> x = 100.0
>>> y = "100.0"
>>> type(x)
<class 'float'>
>>> type(x)(y)
100.0
Run Code Online (Sandbox Code Playgroud)

这适用于OP中给出的示例,但在其他情况下会产生细微的错误或完全失败。

但是“通过lambda”没有多大意义。Lambda只是用于定义匿名函数的特定语法,功能不是很强大。这不是一种特殊的功能。你可以写

>>> def f(x,y): return type(x)(y)
>>> f(100.0, "200.0")
200.0
Run Code Online (Sandbox Code Playgroud)

如果你真的坚持,你可以写

>>> f = lambda x,y: type(x)(y)
>>> f(100.0, "200.0")
200.0
Run Code Online (Sandbox Code Playgroud)

但这会让大多数Python程序员想知道您是否是Python的新手,因为没有理由使用lambda定义匿名函数,然后立即为其命名。