Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法获取返回的值_Python_Return_Python 3.6 - Fatal编程技术网

Python 无法获取返回的值

Python 无法获取返回的值,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用

我得到的结果是

9

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