【问题标题】:Can I assign a function to a variable for use within another function?我可以将函数分配给变量以在另一个函数中使用吗?
【发布时间】:2013-10-13 07:11:56
【问题描述】:

我想知道我是否可以创建一个函数,在它的参数中我可以定义什么函数用于其他东西? 例如:

def askquestion(functionname):
    userinput == str(input("Are you sure you want to run this? <y/n> "))
    if userinput = "y":
        functionname()
    elif userinput == "n":
        print("returning to main menu")
    else:
        print("That is not a valid input!")

我不知道我是否解释得很好,但如果你能帮我解决这个问题,那就太好了。

【问题讨论】:

标签: python function variables assign


【解决方案1】:

是的,你可以。传入函数对象即可:

def foo():
    # do foo

def bar():
    # do bar

askquestion(foo)  # will run foo when `y` is typed.

Python 函数是一流的对象,它们被分配给它们开始定义的任何名称,但您也可以将它们绑定到其他名称。

例如,您可以将它们存储在映射中,然后完全基于另一个变量在映射中查找函数:

map = {
    'spam': foo,
    'eggs': bar,
}

askquestion(map[anothervar])

askquestion 内,functionname 然后绑定到您传入的任何函数对象。在名称后添加() 调用函数。

你也可以传入参数,但是你传入的所有函数必须具有相同的签名。您可以将函数包装在 lambda 或其他函数对象中以传入额外的参数,或者查看 functools.partial() 以生成带有预定义参数的可调用对象。

【讨论】:

  • 如果函数 foo 接受一些参数怎么办?说def foo(blah, blahblah)
  • @ansh0l:你可以传入参数,是的;它只是一个绑定到不同名称的函数对象。
猜你喜欢
  • 2019-08-31
  • 1970-01-01
  • 2015-12-14
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-26
  • 2021-07-10
相关资源
最近更新 更多