2015-12-03 44 views
0

老習慣就是這樣,我會聲明全局變量,並可能使用列表來存儲記錄。我感謝這不是現在這樣做的最好方式,並且Python必須始終不斷地聲明「全局」,因此積極地阻止你這樣做。存儲記錄然後遍歷它們的最佳方式?

那麼我該怎麼做?我想我應該也許使用實例,但我知道沒有辦法根據標識符創建唯一的實例名稱(所有記錄都有唯一的ID),然後找出我有多少實例。

我可以使用字典嗎?

最重要的是,值可以在我的代碼中的任何位置訪問,並且我可以列出記錄的數量並輕鬆地引用/更改值。

+0

你想做什麼?顯示一些代碼。 –

回答

0

很難說,沒有關於您正在嘗試解決的問題的更多信息,代碼範圍和代碼的體系結構。

一般來說:

如果你正在編寫一個腳本,在範圍相當小,真的有什麼錯在腳本的全局命名空間聲明變量。

如果你正在編寫一個更大的系統 - 超越一個模塊或文件,但沒有在多進程/多線程環境中運行,那麼你可以創建一個模塊(作爲一個單獨的文件),處理重用數據的存儲。無論何時您需要讀取或寫入數據,都可以導入該模塊。該模塊可以公開簡單的變量,也可以將數據包裝在類中,並公開用於創建/讀取/更新/刪除的方法。

如果您在多進程/多線程環境中運行,那麼任何類型的全局內存中變量存儲都會出現問題。您需要使用某種外部存儲--Redis或類似的臨時存儲,或者某種類型的數據庫用於永久存儲。

+0

我有幾個線程,沒有什麼大規模的。我想這只是在每個函數中開始看起來凌亂不堪。我發現自己希望有一種方法來宣佈全球一次,那是當我開始認爲我做錯了;) – user4893295

+1

這聽起來像你可能會使用'global'關鍵字超過你所需要的。看看https://docs.python.org/2/faq/programming.html#what-are-the-rules-for-local-and-global-variables-in-python和https:// docs。 python.org/2/faq/programming.html#how-do-i-share-global-variables-across-modules – Laizer