[英]How can I assign a function to a variable without running it?
每当我将一个变量赋值给一个函数时,它就会运行该函数。 因此,如果我在函数中有一个print语句,它将打印文本,即使我想要做的只是分配但不运行该函数。 我不相信C ++等许多其他编程语言都是这种情况,所以我在这里缺少一个核心概念吗?
def function(x):
print("Text From Function")
return 3*x
y = function(2)
我希望没有输出,但实际输出是:Text From Function
如果您有函数a并想将其分配给变量y,您只需执行以下操作:
def a():
print("hello")
y = a
y()
在这种情况下,运行y()将打印“hello”。 如果在函数之后使用括号,它将调用它并返回函数返回的任何内容,而不是函数本身。
从@ParitoshSingh,@ LiranFunaro和@TrevinAvery的评论开始,您要么使用lambda或functools.partial
将具有预填充参数的函数分配给新名称。
import functools
def function(x):
print("Text From Function")
return 3*x
y1 = lambda: function(2)
y2 = functools.partial(function, 2)
然后使用y1()
和y2()
调用它们。
这是因为函数是这样做的,所以你不必一遍又一遍地重写相同的代码,所以当你写作时:
function(2)
它执行写入的整个代码
def function(x):
其中包括印刷文字。
如果要将函数分配给变量,则需要编写:
y = function
没有括号,你就可以做到
result = y(2)
但是,如果print()函数位于函数def中,则无法在不打印文本的情况下分配函数返回的值。 如果你想获得没有打印文本的返回值,你需要摆脱函数def代码中的print()函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.