尝试使用返回值而不使用函数的其他部分

时间:2017-06-21 20:38:23

标签: python function variables return-value

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

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

这一切都可能吗?

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:3)

通常,您可能希望使用某个分支控件来指定要执行的函数的哪些部分,这样您就不会编写死代码。但是为了纯粹回答你的问题,返回值将破坏函数的执行。示例如下:

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

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

答案 2 :(得分:1)

你所要求的不能以这种方式完成。解决这个问题的一种方法是重构代码,在不同的函数中分解不同部分中使用的部分,然后在需要时调用所需的部分。在这个玩具示例中,这可以通过以下方式实现:

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))

这样可以更好地区分逻辑和你的ui。