如何在不运行变量的情况下将函数分配给变量



每当我为函数分配变量时,它都会运行该函数。因此,如果我在函数中有一个 print 语句,即使我只想分配但不运行函数,它也会打印文本。我不相信在许多其他编程语言(如C++(中都是这种情况,那么我在这里缺少一个核心概念吗?

def function(x):
    print("Text From Function")
    return 3*x
y = function(2)

我希望没有输出,但实际输出是:来自 function

在这种情况下,运行 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(( 函数。

最新更新