Fw: [翻譯] Google 建議的 Python 風格指南 16
※ [本文轉錄自 Python 看板 #1HYkY8-Z ]
作者: sandwichC (沒回應=掛站) 看板: Python
標題: [翻譯] Google 建議的 Python 風格指南 16
時間: Thu May 9 08:06:28 2013
這種段落分明的短文,其實很適合用類似維基式的方法,結合眾人的力量翻譯完
成。其實更維基的方法應該是讓所有人也都可以編修文章,讓內容愈來愈好,可
惜 ptt 目前沒有這種功能。
Computer scientist 和 engineer 似乎有一個其他領域的人比較少有的特質:樂
於分享。這也許跟 open source 的概念在 CS 界已經存在許久有關。最近跟幾個
化學領域的人合作開發一些工具,發現 computer scientist or engineer 普遍
比 chemist 開放。但這也許是我個人的偏見,而且我的樣本數量也很小。:p
Anyway,這幾天較忙所以交稿時間比較亂,上線卻看到幾篇文章已經有人自發性
的翻譯了,覺得很開心,這種類維基的翻譯方式的確是可行的。歡迎更多板友插
隊翻譯讓全文更快完成。
順便幫 Translate-CS 板打個廣告,各位翻譯完也順手把文章轉到該板吧。該板
P 板主整理文章整理得很勤。
----------正文開始的分隔線----------
原文網址:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html
靜態可視範圍
可以使用
釋義:
若函式 A 裡有一個嵌入的函式 B,函式B 可以使用函式 A 內宣告的變數,但不能
夠對該變數賦值。python 變數的有效範圍及尋找變數宣告的順序不是依照函式的
呼叫方式,而是按照程式碼的位置決定,這叫做靜態可視範圍。若在一個較大的區
塊內宣告了一個變數 v1,在大區塊內一個較小的區塊 (如:嵌入函式) 對 v1 賦值
,則小區塊內的變數 v1 自動被視做小區塊內的區域變數,故這兩個 v1 並不相同且
互不影響。若 v1 是一個 module 範圍的變數,在較小區塊內 v1 宣告為 global,
它指的則是 module 範圍的 v1。
範例如下:
def get_adder(summand1):
"""Returns a function that adds numbers to a given number."""
def adder(summand2):
return summand1 + summand2
return adder
優點:
通常程式會較為清楚而優雅。有經驗的 LISP、Scheme、Haskell、ML 程式設計師
通常對這種方式感到很自在。
缺點:
有時會導致令人困惑的臭蟲。如下面的例子 (參見 PEP-0227
http://www.python.org/dev/peps/pep-0227/)
i = 4
def foo(x):
def bar():
print i,
# ...
# A bunch of code here
# ...
for i in x: # Ah, i *is* local to Foo, so this is what Bar sees
print i,
bar()
foo([1, 2, 3]) 印出 1 2 3 3 而非 1 2 3 4。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 68.232.121.105
※ 編輯: sandwichC 來自: 68.232.121.105 (05/09 08:11)
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: sandwichC (68.232.121.105), 時間: 05/09/2013 08:13:02
Translate-CS 近期熱門文章
PTT數位生活區 即時熱門文章