2016-03-21 74 views

回答

2

如果存在对x类型实例创建这需要y类型的单个参数,并做正确的事,你可能只需要调用type(x)(y)

>>> x = 100.0 
>>> y = "100.0" 
>>> type(x) 
<class 'float'> 
>>> type(x)(y) 
100.0 

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

但“通过拉姆达”没有多大意义。 lambda只是一个定义匿名函数的特定的,不是非常强大的语法。这不是一种特殊的功能。你可以写

>>> def f(x,y): return type(x)(y) 
>>> f(100.0, "200.0") 
200.0 

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

>>> f = lambda x,y: type(x)(y) 
>>> f(100.0, "200.0") 
200.0 

但是这样会让大多数Python程序员不知道你是新来的Python,因为没有理由使用lambda来定义一个匿名函数,然后立即给它一个名字。

+0

这适用于明确的OP案例,因为恰好碰巧是浮点数的一个参数实例创建方法,它碰巧需要一个字符串并将其解释为浮点数。除了像这样的一些非常狭窄的情况之外,这种方法很可能不起作用,一个简单的例子就是'x = []; y ='100.00'。 – msw

+1

@msw:好的,是的。只有目标类型工作本地支持的强制措施;其他任何事情都会在模棱两可的情况下猜测,这是我们正式拒绝的诱惑。 – DSM