2017-05-26 67 views
3

假設我有以下lambda函數。如何將函數轉換爲str?

fn = lambda x: print(x) 

如果我想將其轉換爲字符串

"lambda x: print(x)" 

我能做些什麼? 我期待str(fn)str(fn.__code__)會做,但不是真的...它只是打印出類型,MEM位置等

而且我已經試過pickle.dumps和JSON爲好,但我不能讓我想。

如何將函數轉換爲顯示函數定義的字符串?

---我要帶功能作爲輸入,並轉換到這串

+0

您可以將其保留爲字符串並在您想要運行時調用eval。 – stark

+0

@stark謝謝。但那不是我想要的。我想將函數作爲輸入,並將其轉換爲字符串 –

+0

@KevinJJ如果您正在輸入它顯然是一個字符串 –

回答

6

如果您已經安裝蘿這很容易。 (pip install dill

from dill.source import getsource 
squared = lambda x:x**2 
print(getsource(squared)) 
+0

如果你想刪除「squared =」,那麼你可以使用str.replace或正則表達式。 – knurzl

+0

太棒了!謝謝。我想投票,但它說我的聲譽太低,不能做到這一點:( –

+0

沒問題;)但你可以檢查答案是正確的! – knurzl