如何判断函数是否将值返回给变量?

时间:2015-11-14 10:22:27

标签: python python-2.7

因此,要给出一个示例,想象一个计算值的函数,如果它不会存储到变量中,它将把值返回给变量或打印出来,如:

def add(a, b):
    c = a+b
    if called: return c    ## Put the value into "answer" below
    else: print "Your answer is: ", str(c)    ## just print it

answer = add(10, 15)
print answer
## Should print 25

add(10, 20)
## Should print """Your answer is 30"""

我想在各种函数(如UI或生成器)中使用它,但无法找到实现布尔语句来确定它的方法。

我用Google搜索了,我发现接近的唯一一件事是确定函数是被调用还是递归(?)。我只是希望函数知道它是否应该将值返回给变量或只是打印它。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

python函数没有关于是否正在分配或忽略返回值的信息。所以,你想要的是不可能的。

如果您愿意进行一些设计更改,可以添加参数:

def add(a, b, print_it):
    c = a+b
    if print_it: print "Your answer is: ", str(c)    ## just print it
    else: return c    ## Put the value into "answer" below

answer = add(10, 15)
print answer
## Will print 25

add(10, 20, true)
## Will print """Your answer is 30"""

或者您可以定义专门用于打印结果的包装函数:

def add(a, b):
    c = a+b
    return c

def print_add(a, b):
    print "Your answer is: ", str(add(a, b))    ## print add's return value

answer = add(10, 15)
print answer
## Will print 25

print_add(10, 20)
## Will print """Your answer is 30"""

通过将基函数传递给包装函数,可以使第二个解决方案更通用:

def add(a, b):
    c = a+b
    return c

def sub(a, b):
    c = a-b
    return c

def print_result(fn, a, b):
    print "Your answer is: ", str(fn(a, b))    ## print function's return value

answer = add(10, 15)
print answer
## Will print 25

print_result(add, 10, 20)
## Will print """Your answer is 30"""

print_result(sub, 10, 20)
## Will print """Your answer is -10"""

等等。