"linecache" --- 隨機存取文字列
******************************

**原始碼：**Lib/linecache.py

======================================================================

"linecache" 模組允許從 Python 原始碼檔案中取得任何一行。當嘗試在程式內
部進行最佳化，會使用快取，這是從單一檔案讀取許多行的常見情況。 這被
"traceback" 模組用來擷取來自原始碼檔案的行，以包含在格式化的 traceback
中。

"tokenize.open()" 函式用來開啟檔案。這個函式使用
"tokenize.detect_encoding()" 來取得檔案的編碼；在沒有編碼標記的情況下
，檔案編碼預設為 UTF-8。

"linecache" 模組定義了下列函式：

linecache.getline(filename, lineno, module_globals=None)

   從名為 *filename* 的檔案中取得 *lineno* 行。這個函式不會產生例外
   --- 它會在出錯時回傳 "''" （找到的行會包含終止換行字元）。

   如果 *filename* 表示一個凍結模組（以 "'<frozen '" 開頭），且
   *module_globals* 不是 "None"，則函式會嘗試從
   "module_globals['__file__']" 取得實際的檔案名稱。

   如果找不到名為 *filename* 的檔案，函式會先檢查 *module_globals* 中
   是否有 **PEP 302** *__loader__* 載入器。如果有這樣一個載入器，而且
   它定義了一個 "get_source" 方法，這之後它就會決定原始碼行（如果
   "get_source()" 回傳 "None"，那麼就會回傳 "''"）。最後，如果
   *filename* 是相對的檔案名稱，則會相對於模組搜尋路徑 "sys.path" 中的
   項目進行搜尋。

   在 3.14 版的變更: 凍結模組的支援 *filename*。

linecache.clearcache()

   清除快取。如果你不再需要先前使用 "getline()" 讀取的檔案行數，請使用
   此函式。

linecache.checkcache(filename=None)

   檢查快取是否有效。如果快取中的檔案可能已在磁碟上變更，而你需要更新
   的版本，請使用此功能。 如果省略 *filename*，則會檢查快取中的所有項
   目。

linecache.lazycache(filename, module_globals)

   即使 *module_globals* 在稍後的呼叫中是 "None" ，也可以擷取非檔案型
   模組的足夠細節，以允許稍後透過 "getline()" 取得其行。這可以避免在真
   正需要某一行之前進行 I/O 操作，而不必無限期地帶著模組的全域變數。

   在 3.5 版被加入.

範例：

   >>> import linecache
   >>> linecache.getline(linecache.__file__, 8)
   'import sys\n'
