2017-06-21 134 views
-6

我有一个非常简单的函数,它返回一个值。尝试使用没有函数其他部分的返回值

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

这是在所有可能的?

+1

重写函数(执行预期的行为,可能使用参数作为开关)和/或调用不同的函数。 – user2864740

+0

我不知道为什么这是越来越被投票遗忘。我是Python的新手,并试图学习。这是我可以学习的最佳方式。请原谅我不是一个公然的专业人士,比如你们其他人。 – level42

+0

你已经明确地写了几行代码来将东西打印到控制台,但是接着问你如何让东西停止打印到控制台? – csmckelvey

回答

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之间的更好的分离。

3

通常情况下,您希望有一些分支控件指定要执行的函数的哪些部分,以便不写入死代码。但为了纯粹回答你的问题,返回值将会破坏函数的执行。下面的例子:

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

这只会返回45.不过,这是不是写这个方法,因为这些报表打印从未得到执行的最佳方式。我建议你写一个新的方法,删除你不需要的代码,或者引入一些分支条件(ifelse)。对不起,我的第一个晦涩的答案。

+3

这似乎是一种处理事物的不好方法。为什么要引入死代码?看来,OP需要一个关于函数如何工作的更基本的解释。 – JohanL

+0

呃...我一直在盯着Python,从字面上看,我的大脑被炸了。我的印象是返回必须在函数的最后,但我认为这对我很有用。 – level42

+1

除非有条件可以使代码执行,否则注释代码是有道理的。这一切都取决于问题陈述,但我会编辑更清楚。 – Peter

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设置为它。