Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
可调用的Python输入?_Python_Python 3.x - Fatal编程技术网

可调用的Python输入?

可调用的Python输入?,python,python-3.x,Python,Python 3.x,有没有可能做到这一点: recognized = input("COMMAND: ") if recognized == "command": co = input("Input: ") co() 这给了我“TypeError:'str'对象不可调用”从input()返回的所有内容都是字符串。可以使用调用本地定义的函数 locals()['my_function']() 如果要在字符串中执行该语句,可以使用exec(co),但不建议这样做。您基本上允许任何代码在系统上运行,这可能是一个巨大的

有没有可能做到这一点:

recognized = input("COMMAND: ")
if recognized == "command":
co = input("Input: ")
co()

这给了我“TypeError:'str'对象不可调用”

input()返回的所有内容都是字符串。可以使用调用本地定义的函数

locals()['my_function']()

如果要在字符串中执行该语句,可以使用
exec(co)
,但不建议这样做。您基本上允许任何代码在系统上运行,这可能是一个巨大的安全问题。

要定义函数,请使用
def

def inputFunc():
    return input("input: ")

co = inputFunk()
这将为变量
co
提供输入值

或者,如果你想打印输入而不是调用它,就使用这个

co = input("Input: ")
print(co)

这将打印您的输入。

使用
eval
功能

co = input()
eval(co)
还有一个我喜欢使用的小技巧,当我想对多个输入进行评估或处理时,就是

s = input()
while s != 'the end': ## here you should use something that can't occur 
                      ## in python itself in form of function or variable etc.

    ## here come things you want to do with s, e.g. print(eval(s))
    s = input()

你期望
co()
的结果是什么(以及对于什么输入)?那么
打印(co)
就足够了,否则
返回co
。这是我们想要避免的。猜猜他想要什么,直到我们猜对为止…:/Exec可以工作,但您必须将
'()'
添加到
co
--
Exec(co+'()')
——否则函数实际上不会被调用。我不知道为什么这一点在没有评论的情况下被否决,除了人们认为不应该告诉任何人关于
exec
。话虽如此,我认为我的答案可能是正确的,特别是如果这个应用程序是供其他人使用的。这并不是他们想要的——他们不想要名为
co
,他们想要调用一个字符串名存储在
co
@MoxieBall中的函数,我编辑了我的答案。现在看一下?这个答案中的内容都是正确的,但是它们与问题无关,问题是如何通过字符串名调用函数。这是正确的答案。在上下文中,示例代码是
locals()[co]()
,它还应该附带一个类似于引用
exec的答案中包含的警告