[英]Passing too many arguments to a function in Python
我正在開發一個程序,該程序執行滲透系統的蒙特卡羅模擬(使用 python)。 為了能夠從 GUI (tkinter) 運行它並使用多個進程,我在 main() 函數中定義了模擬的主要部分。 問題是,這個程序是一個物理模擬,它接受許多參數(10+)。 從 main() 調用的一些函數也需要很多參數並且被調用很多很多次。 例如,在我的 main() 中,我有一個 generate_wire() 函數,它接受 8 個參數,例如 wire_mean_length、wires_distribution 等。這個函數被調用了數百萬次。
這會影響程序的效率嗎? 它是否應該修復,如果是,如何修復?
編輯:代碼的基本結構如下:
def generate_wire("8 parameters"):
"generating a wire according to the parameters"
def main("main parameters"):
for _ in range(nbr_sim):
while True:
generate_wire("8 parameters taken from the main parameters")
"Various calculations"
if percolation is True:
break
if __name__ == '__main__':
"GUI code"
"Run button calls the main function with parameters from GUI entries"
實際上,與其他設計相比,這不會影響程序的運行時間
您可以將所有參數放入字典或自定義類中並傳遞它以使邏輯更清晰
您可以將函數中的邏輯直接提升到循環中,這將減少查找發生的頻率
def generate_wire_wrapper("8 parameters"):
for _ in range(nbr_sim):
"logic to generate a wire"
"various calculations"
def main("main parameters"):
generate_wire_wrapper("8 parameters taken from the main parameters")
但是,改進設計將是您真正的盟友
與其在循環中數千次調用相同的函數,不如考慮
.apply
方法)做更多的工作來.apply
這樣做,例如)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.