我有一個簡單的微分函式
def differentiate(func, num) -> float:
x = num
h = 0.000000001
der = (func(x h)-func(x))/h
return round(der,4)
print(differentiate(lambda x: x 5,10))
這給出了預期的輸出1.0但我想使func引數只需要運算式為字串的形式。例如:
print(differentiate('x 5', 10))
這可能嗎?最好沒有模塊的幫助。
uj5u.com熱心網友回復:
這取決于 x 是否始終是您的變數。如果是這種情況,那么您可以使用 python 的eval函式來決議您的字串并將其評估為 python 運算式:
def differentiate(func_x, num) -> float:
x = num
h = 0.000000001
func = lambda x: eval(func_x)
der = (func(x h)-func(x))/h
return round(der,4)
print(differentiate('x 5', 10))
>>> 1.0
編輯:正如Serge Ballesta在下面指出的那樣,eval 函式可能存在安全問題,因為它允許在運行時不受控制地執行,即它將執行輸入中給出的任何代碼,所以只有在你可以信任函式的輸入時才使用它.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/416618.html
標籤:
