1. 程式人生 > >Python從零開始系列連載(18)——Python特色資料型別(函式)(中)

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

未完待續,連載中......