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”。做这件事的最佳方式是什么 您希望在

我正在编写一个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”。做这件事的最佳方式是什么

您希望在运行任意代码时非常小心,但如果确实需要,您可以使用该函数


更好的方法是给用户一个选项菜单,然后对
选项的内容进行测试,看看他们选择了哪一个,然后运行该函数。

您希望在运行任意代码时非常小心,但如果您确实需要,您可以使用该函数


更好的方法是给用户一个选项菜单,然后对
选项的内容进行测试,看看他们选择了哪一个,然后运行该函数。

您希望在运行任意代码时非常小心,但如果您确实需要,您可以使用该函数


更好的方法是给用户一个选项菜单,然后对
选项的内容进行测试,看看他们选择了哪一个,然后运行该函数。

您希望在运行任意代码时非常小心,但如果您确实需要,您可以使用该函数


更好的方法是为用户提供一个选项菜单,然后测试
选项的内容,看看他们选择了哪一个,然后运行该函数。

您可以使用python
eval

在帮助页面中,eval在全局和局部上下文中计算源。源可以是表示Python表达式的字符串,也可以是compile()返回的代码对象

例如:

 def a():
     print "Hello"

 inp = raw_input()
 eval(inp + "()")

在stdin中输入
a
时,将执行功能
a
。请注意,如果不进行任何安全检查,这可能会很危险。

您可以使用python
eval

在帮助页面中,eval在全局和局部上下文中计算源。源可以是表示Python表达式的字符串,也可以是compile()返回的代码对象

例如:

 def a():
     print "Hello"

 inp = raw_input()
 eval(inp + "()")

在stdin中输入
a
时,将执行功能
a
。请注意,如果不进行任何安全检查,这可能会很危险。

您可以使用python
eval

在帮助页面中,eval在全局和局部上下文中计算源。源可以是表示Python表达式的字符串,也可以是compile()返回的代码对象

例如:

 def a():
     print "Hello"

 inp = raw_input()
 eval(inp + "()")

在stdin中输入
a
时,将执行功能
a
。请注意,如果不进行任何安全检查,这可能会很危险。

您可以使用python
eval

在帮助页面中,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()。