python作用域
http://blog.csdn.net/lovingprince/article/details/6627555
幾個概念:
- python能夠改變變量作用域的代碼段是def、class、lamda.
- if/elif/else、try/except/finally、for/while 并不能涉及變量作用域的更改,也就是說他們的代碼塊中的變量,在外部也是可以訪問的
- 變量搜索路徑是:本地變量->全局變量
-
python能夠改變變量作用域的代碼段是def、class、lamda.
-
if/elif/else、try/except/finally、for/while
輸出結(jié)果:8 8 7
可見這個關鍵字中定義變量,他們的作用域跟外部是一致的,這個跟Java的作用域概念有點不一樣。
-
變量搜索路徑是:本地變量->全局變量
輸出結(jié)果:5 6 5
這里var 首先搜索的是本地變量,scopetest()中 var=6相當于自己定義了一個局部變量,賦值為6. 當然如果的確要修改全局變量的值,則需要如下:
[python]?view plaincopyprint?
再看一種這種情況:
[python]?view plaincopyprint?
根據(jù)調(diào)用順序反向搜索,先本地變量再全局變量,例如搜先在innerFunc中搜索本地變量,沒有,好吧,找找調(diào)用關系上一級scopetest,發(fā)現(xiàn)本地變量var=6,OK,就用他了。
總結(jié)
- 上一篇: 正则表达式shell
- 下一篇: python版本的服务器