Python 从集合变量调用函数?
我正在编写一个python脚本,我想做的是将输入捕获到一个变量中,然后使用该变量调用具有该名称的函数。以下是一个例子:Python 从集合变量调用函数?,python,Python,我正在编写一个python脚本,我想做的是将输入捕获到一个变量中,然后使用该变量调用具有该名称的函数。以下是一个例子: def test(): print "You want to do a test!" option = raw_input("What do you want to do? ") #User types in test option() 现在这不起作用了,因为python没有将option视为变量,而是试图调用函数“option”。做这件事的最佳方式是什么 您希望在
def test():
print "You want to do a test!"
option = raw_input("What do you want to do? ") #User types in test
option()
现在这不起作用了,因为python没有将option视为变量,而是试图调用函数“option”。做这件事的最佳方式是什么 您希望在运行任意代码时非常小心,但如果确实需要,您可以使用该函数
更好的方法是给用户一个选项菜单,然后对
选项的内容进行测试,看看他们选择了哪一个,然后运行该函数。您希望在运行任意代码时非常小心,但如果您确实需要,您可以使用该函数
更好的方法是给用户一个选项菜单,然后对选项的内容进行测试,看看他们选择了哪一个,然后运行该函数。您希望在运行任意代码时非常小心,但如果您确实需要,您可以使用该函数
更好的方法是给用户一个选项菜单,然后对选项的内容进行测试,看看他们选择了哪一个,然后运行该函数。您希望在运行任意代码时非常小心,但如果您确实需要,您可以使用该函数
更好的方法是为用户提供一个选项菜单,然后测试选项的内容,看看他们选择了哪一个,然后运行该函数。您可以使用pythoneval
在帮助页面中,eval在全局和局部上下文中计算源。源可以是表示Python表达式的字符串,也可以是compile()返回的代码对象
例如:
def a():
print "Hello"
inp = raw_input()
eval(inp + "()")
在stdin中输入a
时,将执行功能a
。请注意,如果不进行任何安全检查,这可能会很危险。您可以使用pythoneval
在帮助页面中,eval在全局和局部上下文中计算源。源可以是表示Python表达式的字符串,也可以是compile()返回的代码对象
例如:
def a():
print "Hello"
inp = raw_input()
eval(inp + "()")
在stdin中输入a
时,将执行功能a
。请注意,如果不进行任何安全检查,这可能会很危险。您可以使用pythoneval
在帮助页面中,eval在全局和局部上下文中计算源。源可以是表示Python表达式的字符串,也可以是compile()返回的代码对象
例如:
def a():
print "Hello"
inp = raw_input()
eval(inp + "()")
在stdin中输入a
时,将执行功能a
。请注意,如果不进行任何安全检查,这可能会很危险。您可以使用pythoneval
在帮助页面中,eval在全局和局部上下文中计算源。源可以是表示Python表达式的字符串,也可以是compile()返回的代码对象
例如:
def a():
print "Hello"
inp = raw_input()
eval(inp + "()")
在stdin中输入a
时,将执行功能a
。请注意,如果不进行任何安全检查,这可能会很危险。我想这是裸输入的实际用途:
option = input("What do you want to do? ") #User types in test
option()
这在语义上等同于eval(原始输入())
。注意,在Python3中,raw_input
变成了input
,因此您必须显式地eval
它
这类操作的常见警告是极其不安全的。但我认为,这一点很明显,因为您要求用户可以运行任意代码,所以…我认为这是对裸输入的实际使用:
option = input("What do you want to do? ") #User types in test
option()
这在语义上等同于eval(原始输入())
。注意,在Python3中,raw_input
变成了input
,因此您必须显式地eval
它
这类操作的常见警告是极其不安全的。但我认为,这一点很明显,因为您要求用户可以运行任意代码,所以…我认为这是对裸输入的实际使用:
option = input("What do you want to do? ") #User types in test
option()
这在语义上等同于eval(原始输入())
。注意,在Python3中,raw_input
变成了input
,因此您必须显式地eval
它
这类操作的常见警告是极其不安全的。但我认为,这一点很明显,因为您要求用户可以运行任意代码,所以…我认为这是对裸输入的实际使用:
option = input("What do you want to do? ") #User types in test
option()
这在语义上等同于eval(原始输入())
。注意,在Python3中,raw_input
变成了input
,因此您必须显式地eval
它
这类操作的常见警告是极其不安全的。但我认为,这一点很明显,因为您要求允许用户访问任意代码,所以…eval()
将起作用,但正如@MattDMo所说,这可能是危险的
如果您的函数是模块全局函数,则更安全的方法是:
globals()[option]()
globals()。因此globals()[option]
在该dict中查找绑定到option
的字符串,并返回对象;e、 例如,globals[“test”]
返回test()
的函数对象。然后在末尾添加()
,将调用该函数对象。答对了-你完成了。eval()
会起作用,但正如@MattDMo所说的,这可能会很危险
如果您的函数是模块全局函数,则更安全的方法是:
globals()[option]()
globals()。