Calling a function from a set variable?
本问题已经有最佳答案,请猛点这里访问。
我编写了一个python脚本,我想做的是将输入捕获到一个变量中,然后使用该变量调用具有该名称的函数。下面是一个例子:
1 2 3 4 5 | 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"。做这件事最要紧的方法是什么?
如果您的函数是模块全局变量,那么这是一种更安全的方法:
1 | globals()[option]() |
我喜欢在这种情况下使用听写。如果用户提供的答案不是预期的,甚至可以指定默认选项。
1 2 3 4 5 6 7 8 9 10 11 12 | def buy_it(): print"use it" def break_it(): print"fix it" def default(): print"technologic" * 4 menu = {"buy it": buy_it,"break it": break_it} option = raw_input("What do you want to do?") menu.get(option, default)() |
。
我想,这是裸机
1 2 | option = input("What do you want to do?") #User types in test option() |
号
这在语义上等同于
这类操作的一般警告是极其不安全的。但我认为从您的要求来看,这是显而易见的,允许用户访问运行任意代码,所以…
您可以使用python
从帮助页面,eval在全局和局部上下文中评估源。源可以是表示python表达式的字符串,也可以是compile()返回的代码对象。
例如:
1 2 3 4 5 | def a(): print"Hello" inp = raw_input() eval(inp +"()") |
在stdin输入
您需要非常小心地运行任意代码,但是如果绝对需要,您可以使用
更好的方法是为用户提供一个选项菜单,然后对