每当我为函数分配变量时,它都会运行该函数。因此,如果我在函数中有一个 print 语句,即使我只想分配但不运行函数,它也会打印文本。我不相信在许多其他编程语言(如C++(中都是这种情况,那么我在这里缺少一个核心概念吗?
def function(x):
print("Text From Function")
return 3*x
y = function(2)
我希望没有输出,但实际输出是:来自 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(( 函数。