我有一個動態的Python服務,它將根據每條記錄定義函數,並且我遇到了一些我不太清楚的東西。說我有一個測試程序設置像這樣:多次定義一個函數
func_str = """
def func():
print "top"
"""
exec func_str
func_str = """
def func():
print "bottom"
"""
exec func_str
func()
這當然會,打印"bottom"
,爲exec func_str
第二個呼叫覆蓋第一。我很好奇引擎蓋下發生了什麼。第一個函數定義以某種方式被刪除?
哇,這項服務聽起來很可怕。 –
你確定需要'exec'這樣的全部功能嗎?如果有任何共同的功能,你應該認真考慮編寫一個單獨的函數來接受適當的輸入或使用類和繼承來完成工作而不使用'exec',如果最終用戶可以修改任何輸入,這可能是危險的。 –
我知道這聽起來很可怕,但這不是外部/其他用戶訪問的任何東西。 – Valdogg21