對不起,如果我問了一個愚蠢的問題或犯了一個明顯的錯誤,因為 OOPS 不是我的強項!
我有一個使用 Python 的專案。我已經在一個函式中撰寫了所有代碼,它按預期作業,提供了正確的輸出資料幀。
但是,當我嘗試將一個函式分解為多個函式時,所有函式都存在于不同的 .py 檔案中,所有檔案都存在于一個本地目錄中,然后輸出就會發生變化。然后輸出資料幀包含所有nan 值。
main.py (only one file which contains all the code)
def fn():
.
.
.
return x
這里 x 是預期的結果,它可以作業。但如果我這樣做:
sub_module1.py (file #1)
class a:
def __init__(self):
pass:
def fn1(self, para1):
.
.
return x
sub_module2.py (file #2)
class b:
def__init__(self):
pass:
def fn2(self, para2):
.
.
return y
main.py (file #3)
from sub_module1 import a
from sub_module2 import b
x1 = a().fn1(para1)
x2 = b().fn2(para2)
def fn3(some parameters):
# some logic which makes use of x1 and x2
return new_x
new_x 具有對我沒有意義的 nan 值,因為代碼與 main.py 中使用的代碼相同。唯一的區別是,我沒有對整個代碼使用一個函式,而是將代碼分解為多個函式,這些函式存盤在不同的 python 檔案中但在同一個目錄中,然后我將這些函式呼叫到一個單獨的 python 檔案中( main.py)來獲取輸出。
任何幫助表示贊賞!
uj5u.com熱心網友回復:
據我所知,內部邏輯fn3()或您呼叫的方式存在問題fn3()。
如果您撥打fn3()如下所示的電話 -
# main.py (file #3)
from sub_module1 import a
from sub_module2 import b
x1 = a().fn1(para1)
x2 = b().fn2(para2)
def fn3(some parameters):
# some logic which makes use of x1 and x2
return new_x
if __name__ == '__main__':
new_x = fn3(some parameters)
然后會發生什么,x1并且x2值將不會具有您的方法回傳的值,因為它們的初始化是在f3(). 另外,我希望some parameters包括x1和x2。如果沒有,最好確保您明確地這樣做。我會重寫您的代碼以執行以下操作 -
# main.py (file #3)
from sub_module1 import a
from sub_module2 import b
def fn3(some parameters, x1, x2):
# some logic which makes use of x1 and x2
return new_x
if __name__ == '__main__':
x1 = a().fn1(para1)
# print(x1) for sanity checking.
x2 = b().fn2(para2)
# print(x2) for sanity checking.
new_x = fn3(some parameters, x1, x2)
另一種方法是獲取x1和x2inside的值fn3()。然后您的代碼將如下所示 -
# main.py (file #3)
from sub_module1 import a
from sub_module2 import b
def fn3(some parameters):
x1 = a().fn1(para1)
# print(x1) for sanity checking.
x2 = b().fn2(para2)
# print(x2) for sanity checking.
# some logic which makes use of x1 and x2
return new_x
if __name__ == '__main__':
new_x = fn3(some parameters)
如果這仍然new_x作為一個NAN值回傳,我會逐行除錯內部發生的事情,fn3()因為問題肯定就在那里。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/471703.html
