您好,登錄后才能下訂單哦!
Python中怎么導入循環方法,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
from cli4vof import cli4vof
# command line interface utility function
def cli_util():
pass
# overly massive handlers for the command line interface
def omh5cli():
:
cli4vof()
:
omh5cli()
假定大多控制器都要用到這里的(其實是空的)工具函數。命令行接口的 OMH 都被封裝在 omh5cli() 函數里。 如果我們要添加一個新的命令, 那么它會被調用。
現在這個模塊不斷地增長, 一些聰明的工程師會決定把新命令放入到隔離的模塊里, 在原始模 塊中只提供訪問新東西的鉤子。 這樣, 管理代碼會變得更簡單, 如果在新加入內容中發現了 bug , 那么你就不必在一個幾兆的 Python 文件里搜索。
在我們的例子中, 有一個興奮的經理要我們加入一個 "非常好的特性"。我們將創建一個新的 cli4vof.py 腳本, 而不是把新內容集成到omh5cli.py 里:
import omh5cli
# command-line interface for a very outstanding feature
def cli4vof():
omh5cli.cli_util()
前邊已經提到, 工具函數是每個命令必須的, 而且由于不能把代碼從主控制器復制出來, 所以 我們導入了主模塊, 在我們的控制器中添加對 omh , omh5cli() 的調用。
問題在于主控制器 omh5cli 會導入我們的 cli4vof 模塊(獲得新命令的函數), 而 cli4vof 也會導入 omh5cli (用于獲得工具函數)。模塊導入會失敗, 這是因為 Python 嘗試導入一個先前沒 有完全導入的模塊:
$ python omh5cli.py
Traceback (most recent call last):
File "omh5cli.py", line 3, in ? from cli4vof import cli4vof
File "/usr/prod/cli4vof.py", line 3, in ?
import omh5cli
File "/usr/prod/omh5cli.py", line 3, in ?
from cli4vof import cli4vof
ImportError: cannot import name cli4vof
注意跟蹤返回消息中顯示的對 cli4vof 的循環導入。 問題在于要想調用工具函數, cli4vof 必 須導入 omh5cli 。 如果它不需要這樣做, 那么 omh5cli 將會成功導入 cli4vof , 程序正常執行。 但在這里, omh5cli 嘗試導入 cli4vof , 而 cli4vof 也試著導入 omh5cli 。 最后誰也不會完成 導入工作, 引發錯誤。 這只是一個導入循環的例子。 事實上實際應用中會出現更復雜的情況。
解決這個問題幾乎總是移除其中一個導入語句。 你經常會在模塊的最后看到 import 語句。作 為一個初學者, 你只需要試著習慣它們, 如果你以前遇到在模塊底部的 import 語句,現在你知道是為什么了。在我們的例子中, 我們不能把 import omh5cli 移到最后, 因為調用 cli4vof() 的時候 omh5cli() 名字還沒有被載入。
$ python omh5cli.py
Traceback (most recent call last): File "omh5cli.py", line 3, in ? from cli4vof import
cli4vof
File "/usr/prod/cli4vof.py", line 7, in ?
import omh5cli
File "/usr/prod/omh5cli.py", line 13, in ?
omh5cli()
File "/usr/prod/omh5cli.py", line 11, in omh5cli cli4vof()
File "/usr/prod/cli4vof.py", line 5, in cli4vof omh5cli.cli_util()
NameError: global name 'omh5cli' is not defined
我們的解決方法只是把 import 語句移到 cli4vof() 函數內部:
def cli4vof():
import omh5cli
omh5cli.cli_util()
關于Python中怎么導入循環方法問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。