Python從零開始系列連載(18)——Python特色資料型別(函式)(中)
無返回值的函式
之前說了好多,都是有返回值的函式,那有沒有沒返回值的函式呢?
這個可以有!
函式中變數的作用域
變數的作用域就是在程式中能對這個變數操作的區域範圍
有點像初高中學的函式的定義域
Python允許同名變數的出現
讓我們看個例子:
我們呼叫dayin_outer( )
這裡列印的 a 的值是 2
注意的dayin_inner( ) 函式只是定義了,並沒有呼叫,所以不會執行這個dayin_inner( )的函式體
我們稍微修改一下:
這樣就可以了
注意到,a變數分別有三次賦值,這裡的賦值不是覆蓋了,因為他們三個a是在不同的位置
第一個a是在函式外面,我們稱之為全域性變數(即它的作用域是全域性的)
比如我們改一下程式:
這時候,外面的a就打印出來了!
當然,與之相對的,第二個和第三個a就成為區域性變數
而且這個dayin_inner( ) 函式是被巢狀在 dayin_outer( ) 中的
值為 1 的 a 的作用範圍是dayin_outer( )外層函式中
值為 2 的 a 的作用範圍是dayin_outer( )內層函式中
當我們要使用變數時候,現在最近的區域搜尋
我們修改一下程式:
當我們把 a = 1 註釋掉
則外層函式列印 a 的時候,取的全域性變數
因為內層函式的作用域只在內層函式中,不能延伸到外層函式
我們再改一下程式:
把內層函式裡的 a 註釋掉
則內層函式使用的 a 是外層函式定義的 a
因為,外層函式距離內層函式比全域性變數距離內層函式更近
如果外層函式沒有定義 a ,則會去取全域性變數
是不是又想起了俄羅斯套娃。。。
注意:不要將變數的作用域和變數重複賦值覆蓋搞混
我們看個例子:
注意這裡全域性變數只有一個 a
他的值是 4,因為 0 被覆蓋了
今天作業是自己跟著操作一遍~
自己不敲程式碼永遠學不會寫程式碼
下課
有需要Python學習資料的小夥伴嗎?小編整理一套Python資料和PDF,感興趣者可以加學習群:548377875,反正閒著也是閒著呢,不如學點東西啦~~
人生苦短,我選Python
未完待續,連載中......