首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在另一个Python文件中使用另一个函数中函数的计算值?

如何在另一个Python文件中使用另一个函数中函数的计算值?
EN

Stack Overflow用户
提问于 2020-12-07 20:50:36
回答 1查看 318关注 0票数 0

我用derivation.py编写了以下代码

代码语言:javascript
复制
def Interpolation(ableitungWinkel,x_values):
    
    z = medfilt(derivation,3)
    diff = abs(derivation-z) 
    new_smootheddata = np.where(diff>3,z,derivation)
    x=np.arange(0,len(x_values[:-2]))    
    f = interp1d(x,new_smootheddata,kind="linear")   
    xnew = np.arange(0, len(x_values[:-3]),0.01)
    ynew = f(xnew)
    s=plt.plot(x, z,"o",xnew, ynew, "-")
    
    return s

在我的项目中,也有integration.py。在这个Python文件中,我需要z为这个计算在函数def interpolation中计算的值:

代码语言:javascript
复制
def horizontalAcceleration(strideData):
    resultsHorizontal = list()

    for i in range (len(strideData)):
        yAngle = z
        xAcceleration = strideData.to_numpy()[i, 4]
        yAcceleration = strideData.to_numpy()[i, 5]
        
        a = ((m.cos(m.radians(yAngle)))*yAcceleration)-((m.sin(m.radians(yAngle)))*xAcceleration) 

        resultsHorizontal.append(a)

    resultsHorizontal.insert(0, 0)
    
    return resultsHorizontal

正如您所看到的,我已经将z添加到函数def horizontalAcceleration应该到达的位置。为了在那里使用z,我尝试了以下方法:from derivation import z

但这不管用。因为这样我就得到了错误:ImportError:无法从“派生”导入名称'z‘

有谁知道我怎么能解决这个问题吗?谢谢你帮我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-07 21:07:22

我认为您的误解是因为您认为一个函数就像一个已经运行并修改了a.global状态的脚本。功能不是这样的。函数是对其输入执行的一系列操作(忽略闭包一分钟),它返回一些结果。您可以多次调用它,但是如果不调用它,它就不会执行。一旦它停止执行,它的所有变量就会超出作用域。

不过,您可以导入和调用一个函数。因此,您可以更改返回类型的插值,以返回所有您需要的其他地方。例如。

代码语言:javascript
复制
def Interpolation(...):
...
return {'z': z, 's': s}

然后在某个地方导入该函数,调用它,获取所需的所有数据,然后将其传递给其他函数。

代码语言:javascript
复制
import Interpolation from derivation
# get z and s in a dict result
result = Interpolation(...)
# pass s as well as the other argument to your other function
horizontalAcceleration(strideData, result['s'])
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65189165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档