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

时间:2019-07-27 20:13:53

标签: python

每当我将变量分配给函数时,它就会运行该函数。结果,如果我要在函数中使用print语句,即使我只想分配但不运行该函数,它也会打印文本。我不相信在其他许多编程语言(例如C ++)中会出现这种情况,所以这里没有我缺少的核心概念吗?

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

y = function(2)

我希望没有输出,但实际输出是: 来自功能的文字

3 个答案:

答案 0 :(得分:4)

如果您具有函数a并将其分配给变量y,则只需执行以下操作:

def a():
  print("hello")
y = a
y()

在这种情况下,运行y()将显示“ hello”。如果在函数后使用括号,它将调用它并返回函数返回的内容,而不是函数本身。

答案 1 :(得分:3)

从@ 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()调用它们。

答案 2 :(得分:1)

这是因为编写了函数,因此您不必一遍又一遍地重写相同的代码,因此在编写时:

function(2)

它执行写入的全部代码

def function(x):

其中包括打印文字。

如果要将函数分配给变量,则需要编写:

y = function

不带括号 并且您将能够做到

result = y(2)

但是,如果print()函数在函数def中,则不能在不打印文本的情况下分配该函数返回的值。如果要在不打印文本的情况下获取返回值,则需要在函数定义代码中删除print()函数。