我知道在python中初始化變量/常量是不必要的,但是我的教授仍然希望我們爲練習初始化變量。「初始化」包含python文件的常量?
在我的計劃,我有一個文件,我分配了一個名字:
infile = open("studentinfo.txt", "r")
它是如何將是有意義的初始化常數「INFILE」?我可以將它初始化爲一個空字符串,還是應該將它作爲空文件來執行?
我知道在python中初始化變量/常量是不必要的,但是我的教授仍然希望我們爲練習初始化變量。「初始化」包含python文件的常量?
在我的計劃,我有一個文件,我分配了一個名字:
infile = open("studentinfo.txt", "r")
它是如何將是有意義的初始化常數「INFILE」?我可以將它初始化爲一個空字符串,還是應該將它作爲空文件來執行?
Python中的常用方法是一個變量初始化爲None
,如果不使用它然而。這是您的代碼的未來讀者的信號,表示您希望該變量存在,但直到後來它纔會被使用。
infile = None
這樣,整個代碼的其餘部分,可以檢查值是否設置尚未...
if infile is None:
infile = open(filename, 'r')
with infile:
data = infile.read()
這種方法與類型檢查(uglly)節省您和您知道如果infile
不是None
那麼它必須是一個文件,因此您只是將它用作文件(「duck typing」)。例如,在代碼中的其他地方,你可能有...
if infile:
data = infile.read(1024)
else:
data = ''
這是非常可讀的,沒有任何破壞,如果從未設置文件。
我猜你的教授希望你習慣靜態鍵入未來的語言,在這種情況下,我會使用infile=str()
來確保python將它視爲一個字符串。這也最接近模仿其他語言的語法,不像說:infile=''
。如果你想要一個空文件類型infile = file()
。
通常情況下,當我們要設置一個變量,以「特別沒有價值,」我們使用None
:
infile = None
# ...several lines later...
infile = open(...)
「初始化練習變量」 - 練習*什麼*?毫無意義的樣板? – jwodder
@jwodder哈哈它應該是練習時(如果)我們上其他語言的類 – Ovi
順便說一句:當處理文件時,你幾乎從不將它們分配給一個變量。你總是傾向於通過'with'語句來使用它們:'用open(...)作爲f:用於f:print(line)'中的行。通過這種方式,文件在塊的末尾自動關閉,您不必擔心缺少對'.close()'的調用。 – Bakuriu