我意识到这是一个基本问题,但我无法弄清楚如何回答这个问题。请考虑以下代码示例:
def a_function(someval=None):
if a_function:
print(a_function)
else:
print("None")
foo = a_function
print(foo(1))
无
我理解我可以为变量分配一个函数(或任何东西),因为函数是第一类异议,我可以通过foo()调用该函数。
问题:如果将参数分配给变量,如何将参数传递给函数?
在上面的例子中,很明显(1)没有传递给a_function()。
感谢您对此的帮助。
答案 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
。