2016-03-21 83 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

相關問題