
[英]How can i call function with string value that equals to function name
[英]How can I call a function with a string? [duplicate]
from time import time
import datetime
now = datetime.datetime.now()
Report = now.strftime("%Y%m%d_%H%M%S") + "Prueba llamada de funciones" + ".txt"
modo=0
def llamar_funciones():
if (modo==1):
Alimentaciones_1(Report)
Alimentaciones_2(Report)
else:
print("¿Que ensayos de alimentaciones quieres hacer?")
Ensayo=input()
Nombre_Ensayo= "Alimentaciones_" + Ensayo
print(Nombre_Ensayo)
Nombre_Ensayo(Report)
def Alimentaciones_1(Report):
f = open(Report,"a")
f.write("1.funtzioa")
f.close()
def Alimentaciones_2(Report):
f = open(Report,"a")
f.write("\n2.funtzioa")
f.close()
llamar_funciones()
我收到以下错误:
类型错误:'str' object 不可调用
如何根据变量“modo”的值调用 function 1 或 2?
您只需要另一个 if 语句。 您不能调用字符串,但可以基于它们进行分支。
if Ensayo == "1":
Alimentaciones_1(Report)
elif Ensayo == "2":
Alimentaciones_2(Report)
else:
# ... Handle invalid user input here ...
对于它的价值,您可以调用名称为字符串的 function,但它的编码风格很差,而且极易出错。 需要明确的是,以下内容用于教育目的; 不要这样做。 上面的代码片段是做这类事情的公认方式。
eval("Alimentaciones_{}".format(Ensayo))(Report) # <-- Bad idea
Python 有两个函数可能对您有所帮助,exec() 和 eval()。 他们都接受一个字符串并将其视为 python 代码(您可以使用输入中的字符串并运行它),并且行为略有不同。
但是,这很重要,不要使用它们。 完全没有。 这些函数非常危险,因为它们让用户根据需要从您的代码中调用每个 function,这是不好的做法。
我建议使用 if 案例来检查您想要的值,例如:
if my_str == "my_func":
my_func(...)
elif my_str == "my_other_func":
my_other_func(...)
...
这可能很乏味,但它会让您的用户调用他们需要的任何东西,而不是更多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.