【问题标题】:Trying to use a returned value without the other parts of a function [closed]尝试在没有函数其他部分的情况下使用返回值[关闭]
【发布时间】:2017-06-21 20:38:23
【问题描述】:

我有一个返回值的非常简单的函数。

def GetNumber():
    Number = 45
    print("Getting Number")
    print("Found Number = " + str(Number))
    return Number

def UseNumber(current):
    print("The current number is: " + str(current))

UseNumber(GetNumber())

但是,我的输出如下:

获取号码

找到的数字 = 45

目前的数字是:45

我在应用程序的另一部分使用来自 def GetNumber 的打印输出,因此我需要将它们保留在那里,但我想从 GetNumber 中提取值,而不必每次都重新运行整个 GetNumber 函数。

如何使用返回的值而不让它实际运行整个函数并打印出来?

理想情况下,我希望我的输出是:

目前的数字是:45

这可能吗?

【问题讨论】:

  • 重写函数(以执行预期的行为,可能使用参数作为开关)和/或调用不同的函数。
  • 我不知道为什么这被否决了。我是 Python 新手,正在努力学习。这是我能学到的最好的方法。请原谅我不像你们其他人那样是一个公然的专业人士。
  • 您已经明确编写了几行代码来将内容打印到控制台,但随后询问如何让内容停止打印到控制台?
  • “这是我能学到的最好的方法”这句话充其量是可疑的。编程的一个重要规则是:代码按照它被告知的去做。无论如何,有许多可用的初始资源将通过显示基本构建块和逻辑来“遍历”构建程序;编程只是以稍微不同的方式重复应用这些构建块。就像做蛋糕一样。
  • @level42 请参阅stackoverflow.com/tags/python/info 和“免费 Python 编程书籍”。

标签: python function variables return-value


【解决方案1】:

您可以添加一个函数参数,允许您在函数内打印或不打印:

def GetNumber(print_num=False):
    number = 45

    if print_num:
        print(number)

    return number

GetNumber(True)

num = GetNumber()

print("my num is: {}\n".format(num));

GetNumber(True) 将从函数中打印出数字,而GetNumber() 将简单地返回数字而不打印它。请注意,在我上面的示例中,无论print_num 是如何设置的,它都会返回数字。您可以使用它,也可以直接忽略它。

我们设置print_num=False。也就是说,如果参数没有传入,我们给它设置一个默认值False。

【讨论】:

    【解决方案2】:

    通常,您会希望有一些分支控制来指定要执行的函数的哪些部分,这样您就不会编写死代码。但是出于纯粹回答您的问题的目的,返回值将破坏函数的执行。示例如下:

    def GetNumber():
        Number = 45
        return Number
        print("Getting Number")
        print("Found Number = " + str(Number))
    

    这只会返回 45。但是,这不是编写此方法的最佳方式,因为这些打印语句永远不会被执行。我建议写一个新方法,删除你不需要的代码,或者引入一些分支条件(ifelse)。对不起,我的第一个晦涩的答案。

    【讨论】:

    • 这似乎是一种糟糕的处理方式。为什么要引入死代码?似乎 OP 需要对函数的工作原理进行更基本的解释。
    • 除非有条件可以执行代码,否则注释掉代码是有意义的。这一切都取决于问题陈述,但我会编辑得更清楚。
    • @level42 但是在另一个点(非条件)添加一个 return 是不好的,因为这意味着函数的其余部分将永远不会执行,因此可以被删除。
    • @level42 然后你需要重构你的代码,并在一个或多个单独的函数中分解公共部分,在不同的地方只调用你需要的部分。
    • @level42 这可能是处理它的一种方法。这当然取决于你的函数的长度等等。
    【解决方案3】:

    您所要求的不能以这种方式完成。处理此问题的一种方法是重构代码,将用于不同部分的部分分解为单独的函数,然后在需要的地方调用所需的部分。在这个玩具示例中,这可以实现为:

    def get_number():
        number = 45
        return number
    
    def print_number(number):
        print(number)
    
    number1 = get_number()
    print_number(number1)
    
    number2 = get_number()
    print("my number is: {}\n".format(number2))
    

    这可以更好地分离逻辑和用户界面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-25
      • 2017-06-26
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      相关资源
      最近更新 更多