gpt4 book ai didi

Python:Lambda 内部打印函数

转载 作者:行者123 更新时间:2023-11-28 21:52:01 24 4
gpt4 key购买 nike

有很多与 lambda 和打印相关的问题,但我找不到关于这个确切问题的任何信息。

我想在 print 语句中打印我的 lambda 函数的结果。但是,我得到了错误的输出。我正在使用 Python 3

from __future__ import print_function
file_name = "tester"
target = "blue"
prediction = "red"

print(file_name,target,prediction, str(lambda x: print('+') if target==prediction else print('-')))

返回:

tester blue red <function <lambda> at 0x10918c2f0>

如何获取 lambda 函数的实际结果?

最佳答案

lambda 实际上只是函数。所以,除非你调用它们,否则你不会从它们那里得到任何结果。当你做的时候

str(lambda x: print('+') if target==prediction else print('-'))

您实际上并不是在调用 lambda 函数,而是试图获取函数本身的字符串表示形式。如您所见,字符串表示包含有关对象是什么以及它在内存中的存储位置的信息。

<function <lambda> at 0x10918c2f0>

除此之外,您的 lambda 中的另一个问题是,您实际上在其中调用了 print 函数。它实际上会打印结果但返回 None。因此,即使您调用 lambda 表达式,您也会打印出 None。例如,

>>> print(print("1"))
1
None

但是,好消息是,就您而言,您根本不需要 lamda

print(file_name, target, prediction, '+' if target == prediction else '-')

表达式,

'+' if target == prediction else '-'

被称为conditional expression如果 target 等于 prediction,将确保您将获得 +,否则为 -

>>> file_name, target, prediction = "tester", "blue", "red"
>>> print(file_name, target, prediction, '+' if target == prediction else '-')
tester blue red -

注意:如果您使用的是 Python 3.x,则不需要从 __future__ 导入 print_function。在 Python 3.x 中,它已经是一个函数。

Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> type(print)
<class 'builtin_function_or_method'>

关于Python:Lambda 内部打印函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28927446/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com