在循环中更改函数的名称
changing the name of a function in a loop
我没有找到问题的答案
我有名称为 stage_1()、stage_2() e.t.c(至 8)的函数。
我可以 运行 使用循环吗?
stage = 1
for i in range(8):
print((f'stage_{stage}'))
stage +=1
我知道这是错误的。什么是正确的方法?
I have function with names stage_1(), stage_2() e.t.c (to 8).
实际上这是一个非常糟糕的想法。
Can I run it using loop?
当然可以!您可以使用 globals
:
for i in range(1, 8):
current_function = globals()[f"stage_{i}"]
result_of_current_function = current_function()
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()
如果你想运行像这样在循环中运行,你应该使用eval()
stage = 1
for i in range(8):
print(eval((f'stage_{stage}')))
stage +=1
但是使用eval()
是错误的习惯,非常不安全,explanation
我没有找到问题的答案
我有名称为 stage_1()、stage_2() e.t.c(至 8)的函数。
我可以 运行 使用循环吗?
stage = 1
for i in range(8):
print((f'stage_{stage}'))
stage +=1
我知道这是错误的。什么是正确的方法?
I have function with names stage_1(), stage_2() e.t.c (to 8).
实际上这是一个非常糟糕的想法。
Can I run it using loop?
当然可以!您可以使用 globals
:
for i in range(1, 8):
current_function = globals()[f"stage_{i}"]
result_of_current_function = current_function()
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()
如果你想运行像这样在循环中运行,你应该使用eval()
stage = 1
for i in range(8):
print(eval((f'stage_{stage}')))
stage +=1
但是使用eval()
是错误的习惯,非常不安全,explanation