调用一个';def&x27;带有';输入';用Python

调用一个';def&x27;带有';输入';用Python,python,function,Python,Function,我在做一个项目,有点卡住了。我希望程序的用户能够调用函数。但是用户调用它必须很容易。比如说 def definition(): print("This is a function") command = input("> ") if command == definition: definition() else: print("") 在这个函数中,我希望用户不要在输入中写入()。但我希望用户能够编写“定义”来调用函数。有人知道怎么做吗?试试这个 whitelis

我在做一个项目,有点卡住了。我希望程序的用户能够调用函数。但是用户调用它必须很容易。比如说

def definition():
    print("This is a function")
command = input("> ")
if command == definition:
    definition()
else:
    print("")
在这个函数中,我希望用户不要在输入中写入()。但我希望用户能够编写“定义”来调用函数。有人知道怎么做吗?

试试这个

whitelist_funcs = ['definition', 'something else']
command = input("> ")
if command in whitelist_funcs:
    exec(f"{command}()")
else:
    print("")

您缺少来自around定义的引号,因此尝试将未声明的变量与始终等于false的输入字符串进行比较

尝试:

def定义():
打印(“这是一个函数”)
命令=输入(“>”)
如果命令=='definition':
定义()
其他:
打印(“”)

您必须使用if语句隐式定义条件

为了方便用户,您可以这样做:

def definition():
       #your function here
if __name__=='__main__':
 print ("Choose your option:\n1. Definition")
 choice = int(input("Enter choice ")
if choice == 1:
 definition ()

您混淆了函数名(代码中的可调用对象)和输入的名称

对于您的问题,我将使用函数名字典作为键,函数引用作为值

def function1():
    print ('calling function1')

def function2():
    print ('calling function2')

def function3():
    print ('calling function3')

functions = {}
functions['function1'] = function1
functions['function2'] = function2
functions['function3'] = function3

name = input('Enter the function name:\n')
if name in functions:
    functions[name]()
else:
    print ('Invalid function name. Use one of: ')
    for key in functions.keys():
        print ('  - ' + key)
只有一个命令“定义”

更多命令和函数

def定义():
打印(“这是定义函数”)
def modify():
打印(“这是修改功能”)
func={“定义”:定义,“修改”:修改}
命令=输入(“>”).strip().lower()
如果命令在func中:
func[命令]()
其他:
打印(“错误的命令!”)

您正在将输入与函数本身进行比较,您的意思是
==“definition”
命令是字符串,
定义是函数。比较结果总是给出
。这是行不通的。您应该将它与
“definition”
进行比较,string.Exec(和/或eval)几乎从来都不是处理用户输入的正确方法。
def definition():
    print("This is a function")

command = input("> ")

if command == "definition":
    definition()
else:
    print("Wrong command !")