簡體   English   中英

如何在另一個 Python 文件中使用另一個 function 中的 function 的計算值?

[英]How can I use a calculated value of a function in another function in another Python file?

我在derivation.py中編寫了以下代碼:

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在 function def interpolation中計算的值用於此計算:

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

如您所見,我已經在 go 的位置將 z 添加到 function def HorizontalAcceleration 中。 要在那里使用 z,我嘗試了以下方法: from derivation import z

但這不起作用。 因為那時我得到了錯誤: ImportError: cannot import name 'z' from 'derivation'

有人知道我該如何解決這個問題嗎? 謝謝你幫助我。

我認為您的誤解是因為您認為 function 就像一個腳本,已經運行並修改了 a.global state。 這不是 function 是什么。 function 是對其輸入執行的一系列操作(忽略一分鍾的閉包),返回一些結果。 您可以多次調用它,但不調用它,它永遠不會執行。 一旦它停止執行 scope 之外的所有變量 go。

不過,您可以導入並調用 function。 因此,您可以更改 Interpolation 的返回類型以在其他地方返回您需要的所有內容。 例如

def Interpolation(...):
...
return {'z': z, 's': s}

然后在某個地方導入 function,調用它,取回您需要的所有數據,然后將其傳遞給您的其他 function。

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'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM