如何使用用户输入来调用用户定义的函数?

Posted

技术标签:

【中文标题】如何使用用户输入来调用用户定义的函数?【英文标题】:How can I use user input to call user defined function? 【发布时间】:2020-05-09 09:53:55 【问题描述】:

我有以下功能

def retrieve_phone_data():
    # function does something
    return phone_list

def retrieve_customer_data():
    # function does something
    return customer_info

def main(input1, input2):
    if input1 == 'phone' and input2 == 'customer':
        retrieve_phone_data()
        retrieve_customer_data()
    else:
        print('Please enter valid input')

input1input2 只能有特定的值(让我们说 "phone""customer" 现在)。我有 10 多个函数,我不想使用 If 语句,因为它太多了。

我需要像 excel 中的 vlookup 这样的东西,我将创建可能的输入列表和共同赞助函数,以便每个有效的用户输入都将链接到该列表中的一个函数。有什么办法吗?

【问题讨论】:

您的问题的要点很清楚,但是您的代码示例除了缩进不正确(我提交了编辑)之外,可能也不是您想要的。您可能希望在 input1 == 'phone' 时调用 retrieve_phone_data 并在 input2 == customer'` 时调用 retrieve_customer_data,而不是仅在两个相等条件成立时调用这两个函数。 【参考方案1】:

您可以在此处使用dict

data_retrievers = 
    "phone": retrieve_phone_data,
    "customer": retrieve_customer_data,

然后在你的 main 方法中:

if input in data_retrievers:
    data_retriever = data_retrievers[input]
    retrieved_data = data_retriever()
else:
    # Signify invalid input

如果要添加另一个输入,只需在data_retrievers 中添加一个条目,键为input,值为对应的函数。注意data_retrievers中函数名后面缺少(),该函数仅在获取data_retriever时调用。

【讨论】:

非常感谢!它工作顺利。顺便说一句,我在我的主要功能中包含了 data_retrivers 。它工作顺利。干杯!

以上是关于如何使用用户输入来调用用户定义的函数?的主要内容,如果未能解决你的问题,请参考以下文章

用户定义函数中的指针和输入

如何根据 C 函数中函数的输入退出 while 循环?

如何使用用户输入在 Python 中调用函数? [复制]

IL 为用户定义的函数生成代理<输入,返回>

如何将输入传递到用户定义函数中的命名列表

如何使用 SQL 函数和用户提供的输入创建自定义 Diesel 查询?