我沒有找到我的問題的答案
我有名稱為 stage_1()、stage_2() 等(至 8)的函式。
我可以使用回圈運行它嗎?
stage = 1
for i in range(8):
print((f'stage_{stage}'))
stage =1
我知道這是錯誤的。什么是正確的方法?
uj5u.com熱心網友回復:
我有名稱為 stage_1()、stage_2() 等(至 8)的函式。
實際上這是一個非常糟糕的主意。
我可以使用回圈運行它嗎?
當然!您可以使用globals:
for i in range(1, 8):
current_function = globals()[f"stage_{i}"]
result_of_current_function = current_function()
甚至使用evalor exec:
for i in range(1, 8): # Range should start from 1
eval(f"stage_{i}()") # or exec
你還記得我告訴你“這是一個非常糟糕的主意”嗎?
一個更好的主意是將函式存盤到list:
functions_list = [
stage_1, stage_2, stage_3,
stage_4, stage_5, stage_6,
stage_7
]
for最后你可以這樣回圈呼叫它們:
for function in functions_list:
function()
uj5u.com熱心網友回復:
如果你想像這樣在回圈中運行函式,你應該使用eval()
stage = 1
for i in range(8):
print(eval((f'stage_{stage}')))
stage =1
但是使用eval()是錯誤的習慣,那是很不安全的,解釋
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/462027.html
上一篇:如何使用函式、for回圈和條件陳述句訪問陣列中物件的屬性?
下一篇:為每組用戶輸入創建臨時串列
