将参数传递给分配给变量的函数

时间:2016-01-22 19:32:08

标签: python

我意识到这是一个基本问题,但我无法弄清楚如何回答这个问题。请考虑以下代码示例:

def a_function(someval=None):
    if a_function:
        print(a_function)
    else:
        print("None")

foo = a_function

print(foo(1))
  

我理解我可以为变量分配一个函数(或任何东西),因为函数是第一类异议,我可以通过foo()调用该函数。

问题:如果将参数分配给变量,如何将参数传递给函数?

在上面的例子中,很明显(1)没有传递给a_function()。

感谢您对此的帮助。

3 个答案:

答案 0 :(得分:2)

我想你在询问functools.partial

from functools import partial

def a_function(someval=None):
    if someval:
        print(someval)
    else:
        print("None")

foo = partial(a_function, 1)
foo()  # prints 1

foo这是一个部分函数,​​它使用特定参数“冻结”a_function函数。

答案 1 :(得分:2)

您的代码只需要一些返工:

def a_function(someval=None):
    print(someval)

foo = a_function

foo(1)

然后结果:

1

在此之前,您正在检查始终为if a_function的{​​{1}},因为该函数是一个对象并且评估为True

并且您还打印了True的返回值a_function,因为该函数没有返回语句。

答案 2 :(得分:1)

我认为问题中给出的函数定义将始终返回None

def a_function(someval=None):
    if someval:
        print(someval)
    else:
        print("None")

现在foo(1)应打印1