每当我将变量分配给函数时,它就会运行该函数。结果,如果我要在函数中使用print语句,即使我只想分配但不运行该函数,它也会打印文本。我不相信在其他许多编程语言(例如C ++)中会出现这种情况,所以这里没有我缺少的核心概念吗?
def function(x):
print("Text From Function")
return 3*x
y = function(2)
我希望没有输出,但实际输出是: 来自功能的文字
答案 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()函数。