2011-10-10 40 views
2

假設我有一個模塊,名爲設備其中包含一個名爲ConfigureDevice的類。讓我們也說我有一個叫做comports的模塊,它定義了我的com類在一個叫做ComPorts(enum in C)的類中。何處導入模塊

現在,假設ConfigureDevice的構造函數接受一個名爲comPorts的參數。問題是,我應該在設備模塊的開頭導入comports,還是應該創建ConfigureDevice這個導入?

所以,應進口相稱發生在這裏:

# device module 
import serialwriter 
import comports 

class ConfigureDevice: 
    def __init__(self, comPort): 
     self.serialWriter = serialwriter.SerialWriter(comPort) 

或者我應該導入它在創建ConfigureDevice,這樣的代碼:

import device 
import comports 

... 

device.ConfigureDevice(comports.ComPorts.COM_1) 
+0

[Python import coding style](http://stackoverflow.com/questions/477096/python-import-coding-style) – DhruvPathak

回答

4

通常你應該始終把import在這是Python程序員期望找到它的模塊的頂部,因爲那麼任何導入錯誤都會在程序啓動時發生,而不是在最後調用一個函數時發生。我們通常只將import放在一個函數中,因爲(a)我們試圖避免設計錯誤的模塊之間的一個尷尬的導入循環,或者(b)因爲我們想讓第三方庫是可選的,所以如果你只需要它調用該函數。

更新:感謝您的代碼示例!除了我最初的建議,import總是在文件頂部,我現在可以另外建議您從設備模塊中刪除導入comport,因爲從我所看到的,您從不使用該模塊 - 我沒有請參閱設備模塊代碼中任何位置的名稱comport。通常,如果您嘗試從文件中刪除import語句,但該程序仍在運行,則該語句首先不屬於該語句。 pyflakes程序可以幫助您找到import陳述,隨着代碼的發展,陳述將不再有用。

+0

感謝布蘭登。我已經添加了兩個例子來讓我的問題更清楚。在這兩個例子中,導入都位於頂部,但哪個是正確的? – Baz