所以我有一个不断吐出的功能:
(10.3,11.4)
应该吐出来的时间:
10.3 11.4
我玩了并编写了一个简单的python代码,我似乎理解了这个概念
a=3
b=3
print a,b #returns 3 3
但它不适用于下面的函数,所以我想知道它为什么一直返回()
import math
x=10.01
y=9.01
def d():
b = 2.00 * x / math.sqrt(7)
q=round(y-b,2)
r=round(y+b,2)
return q,r
print d() #returns (1.4399999999999999, 16.579999999999998)
答案 0 :(得分:4)
print
(正确)打印从d返回的元组。要单独打印值,请尝试以下操作:
print '{} {}'.format(*d())
或者这个:
dret = d()
print dret[0],dret[1]
print a,b
不会将a,b
解释为元组,而是将其解释为print
语句的参数序列。请注意,print
语句会更改Python3中的语法,以增加混淆。
要使a,b
案例与q,r
案例平行,它看起来更像是这样:
c = a,b
print c
在这种情况下,print
语句将接收元组,而不是两个单独的值。
答案 1 :(得分:2)
原因在于“return q,r”
您无法从函数返回多个值。 python正在做的是用q和r创建一个元组,并返回它,因为返回q,r被解释为return(q,r)然后print接受并输出一个元组。因此,打印(q,r)
非常公平但是,打印q,r的执行方式不同,作为多参数打印,并打印所有带有空格的参数。
希望这可以解决任何困惑。
答案 2 :(得分:0)
来自官方文件;
因此,像这样返回函数中的多个值会按照定义将它们返回到元组中。
尝试显式解包由d()
返回的元组:
In [1]: import math
In [2]: x=10.01
In [3]: y=9.01
In [4]: def d():
...: b = 2.00 * x / math.sqrt(7)
...: q=round(y-b,2)
...: r=round(y+b,2)
...: return q,r
...:
In [5]: a, b = d()
In [6]: print a, b
1.44 16.58