考慮這個例子:爲什麼在Python的循環之外可以訪問變量?
for iter in xrange(10):
myvar = iter
print myvar
# 9
這裏myvar
顯然是外循環?但它仍然可以訪問。 如果這是Perl,它會引發錯誤。
這種功能在Python背後的原因是什麼? 它有害嗎?那麼在循環之前聲明一個變量,那麼最佳做法是什麼?
考慮這個例子:爲什麼在Python的循環之外可以訪問變量?
for iter in xrange(10):
myvar = iter
print myvar
# 9
這裏myvar
顯然是外循環?但它仍然可以訪問。 如果這是Perl,它會引發錯誤。
這種功能在Python背後的原因是什麼? 它有害嗎?那麼在循環之前聲明一個變量,那麼最佳做法是什麼?
沒有新的作用域由for循環創建(Ruby的行爲方式也相同)。如果您是來自爲區塊創建新範圍的語言,這可能會令人驚訝。
只要你知道規則,我不認爲這是有害的。
如果你的函數和方法太大以至於難以跟蹤,那麼你的函數和方法太大了。
把它看成是,如果你這樣做:
my_var = 0
my_var = 1
my_var = 2
...
my_var = 9
print my_var
這基本上是重複的樣子,也沒有理由my_var
不會從當前的方法/範圍內的訪問。
http://stackoverflow.com/questions/3611760/scoping-in-python-for-loops – galaxyan
有全球範圍和功能(本地)範圍。沒有塊級的範圍。這是有這樣一個簡單的計劃的副作用。 – RobertB
tl; dr:python!= c –