亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何從一個Python腳本導入函數而不調用它

如何從一個Python腳本導入函數而不調用它

一只萌萌小番薯 2023-08-22 10:37:00
我正在嘗試導入一個名為的函數,page1該函數內部包含庫文件中的其他函數,以便我可以在該文件中調用它。但是,這會產生以下錯誤:Traceback (most recent call last):? File "/Users/antonios/numworks-math-libs/numworksMath.py", line 1, in <module>? ? import numworksLibs? File "/Users/antonios/numworks-math-libs/numworksLibs.py", line 1, in <module>? ? from numworksMath import page1? File "/Users/antonios/numworks-math-libs/numworksMath.py", line 35, in <module>? ? page1()? File "/Users/antonios/numworks-math-libs/numworksMath.py", line 29, in page1? ? numworksLibs.get_ordered_pair(ordered_pair_num, xs, ys)AttributeError: partially initialized module 'numworksLibs' has no attribute 'get_ordered_pair' (most likely due to a circular import)我認為這是因為主腳本正在導入庫,而庫正在導入主腳本(循環導入)。有沒有辦法可以在 Python 中解決這個問題?我已經嘗試了該網站上的所有解決方案,并確保沒有任何名稱與任何 Python 內置庫沖突。get_ordered_pair也在庫文件中定義。庫文件導入:from numworksMath import page1主腳本的片段:import numworksLibsdef page1():page1包含在沒有輸入的情況下調用函數時將運行的代碼,并且從 Python CLI 導入文件時會發生這種情況。
查看完整描述

2 回答

?
catspeake

TA貢獻1111條經驗 獲得超0個贊

您可以通過檢查文件是否作為腳本運行或者是否作為模塊導入來保護代碼。為此,您需要檢查電流是否__name__設置為'__main__'。

如果您的文件如下所示:

def foo():
    ...

foo()

只需將其更改為僅在運行foo時運行__name__'__main__'

def foo():
    ...
if __name__ == '__main__':
    foo()

現在foo只有當你直接在文件上調用 python 時才會自動運行,而不是簡單地導入它。


查看完整回答
反對 回復 2023-08-22
?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

在這種情況下,您真正想做的是創建一個單獨的文件,包含您多次導入的所有代碼,并讓每個腳本導入它。對我來說,我創建了一個名為 的文件,main.py其中包含需要多次導入的所有代碼,然后庫文件和主腳本都導入該文件。



查看完整回答
反對 回復 2023-08-22
  • 2 回答
  • 0 關注
  • 168 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號