※ 本文為 nakts0123.bbs. 轉寄自 ptt.cc 更新時間: 2013-05-05 19:11:29
看板 Python
作者 標題 [翻譯] Google 建議的 Python 風格指南 5
時間 Mon Apr 29 22:07:50 2013
原文網址:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html
* Global variables
避免使用全域變數。
釋義:
global variable 指被宣告在 module 等級的變數。
優點:
有時候很方便。
缺點:
因為在 import 時會對 module level 的變數賦值,因此 import 時可能會改變模
組的行為。
編案:我並不很確定這句話要表達的涵義,原文如下:
Cons: Has the potential to change module behavior during the import,
because assignments to module-level variables are done when the
module is imported.
我自己的解釋如下,但並不一定正確代表原文要傳達的訊息:
假設有三個檔案:
File 1: foo.py
x = 1
File 2 bar.py
import foo
foo.x = 2
def func():
pass
File 3: main.py
import foo
foo.x = 3
import bar
bar.func()
print foo.x
如果只看 main.py,會很疑惑為何輸出值是2,這是因為當 main.py 在 import bar
時,bar.py 的第二行對 foo.x 賦值了。
如果版友很更好的見解歡迎提出討論。
決策:
避免使用全域變數,必要時可考慮用 class 變數。可能需要用到全域變數的狀況:
1. 腳本預設的選項。
2. 模組層級的常數。如:PI = 3.14159。常數的命名應該只包含大寫字母和底線,
關於命名的細節在之後命名的規則會有更詳細的說明。
3. 有時候使用全域變數來當快取或當作函數的返回值很方便。
4. 若真需要全域變數,該變數應只在 module 內使用,並透過 module 層級的函數
存取之。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 75.102.68.144
推 :應該是因為 module level 的變數是 static1F 04/30 03:20
推 :看法和原 po 一樣
推 :看法和原 po 一樣
推 :推3F 04/30 14:27
--
※ 看板: Gabinius 文章推薦值: 0 目前人氣: 0 累積人氣: 49
作者 sandwichC 的最新發文:
- 請問各位有花旗信用卡但無該行存款的卡友 若需要繳的金額>30萬時,有建議什麼方便的繳費方式嗎? 我過去大多用花旗App輸入他行帳戶直接繳費 但金額>30萬時好像會失敗 我主要的存款在郵局, …85F 24推
- 請問一下,若股利剛破20000, 按規定繳納 2.11% 的稅, 實拿會不會低於股利略低於 20000 的人啊? 按健保署的試算: 若股利所得 20001 元,補充保費422元,故實拿19579元 若 …36F 24推 1噓
- 原文網址: Google Python Style Guide * Generators 有需要時就用 generator 釋義: 一個 generator 函式的回傳值是一個 generator 物 …1F 1推
- 原文網址: Google Python Style Guide * Default Iterators and Operators 若變數的型態支援,應優先使用預設的迭代器 (iterator) 及通 …
- Google 建議的 Python 風格指南 7 原文網址: Google Python Style Guide * list comprehension 在邏輯簡單的情況下可以使用 list com …6F 2推
點此顯示更多發文記錄
→
guest
回列表(←)
分享