繁体   English   中英

如何在不运行变量的情况下为变量赋值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM