【问题标题】:how to print only the return values of a function? [duplicate]如何只打印函数的返回值? [复制]
【发布时间】:2018-08-28 08:59:17
【问题描述】:

我想学习如何只打印函数的返回值。

I.E.

def dude():
  print("Hello")
  return 1

我想只打印返回值而不是所有的函数过程。我想使用该函数并能够使用不同的命令来获取返回值,而不抑制打印。因为print(dude()) 打印 Hello 和返回值。

【问题讨论】:

标签: python function return


【解决方案1】:

装饰你的家伙!

def dude_is_decorated(f):
  def wrap(*args, **kwargs):
    import os
    import sys
    nothing = open(os.devnull, 'w')
    sys.stdout = nothing
    sys.stderr = nothing # remove if you want your exceptions to print
    output = f()
    nothing.close()
    sys.stdout = sys.__stdout__
    sys.stderr = sys.__stderr__
    return output
  return wrap

@dude_is_decorated
def dude():
  print("Hello")
  return 1

print(dude())

输出:

1

【讨论】:

  • 还有sys.stderr
  • 对,异常应该是可见的。
  • @TeachMeEverything 对我有用。你忘了@dude_is_decorated 部分吗?
【解决方案2】:

这似乎效果更好:

def dude(x,y):
    z= x+y:
    print ("Hello")
    return z

    print(str(dude(2,3))[1:len(str(dude(2,3)))-1])

虽然它很丑,但它可以工作并且不会破坏其他任何东西,我可以让它成为一个函数。它可以只输出 values ,它只需要更多的工作来分隔值以供另一位代码使用。它仍然很丑,我希望有一个像 print(dude(2,3).return) 这样干净的简单解决方案。我发现这对于我所做的更复杂的数学计算非常有用。通过一点点工作,我使这个函数成为自动输出单个值和多个值的函数。前提保持不变, str(dude()) 是简单的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 2020-01-29
    • 2015-12-01
    • 2017-05-03
    相关资源
    最近更新 更多