den*_*icz 1 python lambda python-2.7
如果我有以下变量:
x = 100.0
y = "100.0"
Run Code Online (Sandbox Code Playgroud)
我想将其转换y为任何类型x,但尝试通过lambda进行转换。
如果存在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定义匿名函数,然后立即为其命名。