因此,要给出一个示例,想象一个计算值的函数,如果它不会存储到变量中,它将把值返回给变量或打印出来,如:
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搜索了,我发现接近的唯一一件事是确定函数是被调用还是递归(?)。我只是希望函数知道它是否应该将值返回给变量或只是打印它。有什么想法吗?
答案 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"""
等等。