我有一个非常简单的函数,它返回一个值。
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
这一切都可能吗?
答案 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。