Python 无法获取返回的值
我得到的结果是 9Python 无法获取返回的值,python,return,python-3.6,Python,Return,Python 3.6,我得到的结果是 9 0 0.0 值9未返回到duration,duration已初始化为0。因此无法正确计算除法(duration) 我想要的输出是 9 9 3 您应该使用delta(数据)编辑一行至duration=delta(数据),因为未存储报税表 我已经对代码进行了测试,它可以与此修改一起使用。问题是delta函数中的description变量与您使用duration=0定义的变量不同。在函数内部,它是一个局部变量。因此,要么捕捉到duration的返回,要么将duration用
0
0.0
值9未返回到duration,duration已初始化为0。因此无法正确计算除法(duration) 我想要的输出是 9
9
3
您应该使用
delta(数据)
编辑一行至duration=delta(数据)
,因为未存储报税表
我已经对代码进行了测试,它可以与此修改一起使用。问题是delta函数中的description变量与您使用
duration=0
定义的变量不同。在函数内部,它是一个局部变量。因此,要么捕捉到duration的返回,要么将duration用作global
变量。另一种方法是将非局部持续时间
放入delta函数中
改变
data=[1,2,3,4,5,6,7,8,10]
def event(data):
duration=0
def delta(data):
first=data[0]
last=data[8]
duration =last - first
print(duration)
return duration
def division(duration):
a=duration/3
print(a)
delta(data)
print(duration)
division(duration)
event(data)
到
要“获取”函数的返回值,您需要立即使用它或分配它(将其绑定到名称)。作业是您在这里需要的,因为您使用了两次结果。它由=
操作员执行。你可以这样做:
duration=delta(data)
print(duration)
division(duration)
请记住,您在delta
函数中定义的duration
与event
中的函数无关,因为它们位于不同的名称空间中。如果您想从delta
设置事件的持续时间,可以让Python知道您想使用非本地
访问封闭函数中的内容。从delta
获取返回值的另一种方法是向其添加以下第一行:
duration = delta(data)
print(duration)
division(duration)
尽管如此,这不是推荐的解决方案。如果将名称空间完全分开并修复返回值分配,则更好
作为一个侧面注释,考虑重新定义<代码>最后< /C> >作为代码>最后=数据[-1 ] < /代码>。Python允许您使用负索引从列表末尾进行索引。
我在delta函数中使用了全局持续时间,但它仍然不起作用。我不知道如果我是正确的,你应该在函数外部创建一个全局函数,然后在函数内部再次使用它。但是,我认为这是一件坏事,因为你必须使用全局函数两次,一次在事件函数中,一次在增量函数中。但是,我认为还有一种方法,尝试使用非局部函数,我只是看了一下up@madPhysisct回答得很好,我认为这是你能得到的最好的答案
duration = delta(data)
print(duration)
division(duration)
nonlocal duration