Python编程基础:第二十四节 作用域Scope
第二十四節 作用域Scope
- 前言
- 實踐
前言
在Python中每一個變量都有其自己的生命周期,我們一般將變量分為全局變量與局部變量,全局變量是指在整個代碼內部都可以訪問到的變量,局部變量是指只有在函數內部能夠訪問到的變量。
實踐
我們先創建一個函數用于展示用戶的名稱:
def Display_Name():name = "Tom"print(name) Display_Name() >>> Tom我們可以發現這個函數沒有接受任何參數,但是可以打印用戶名稱,這是為什么呢?其實是因為在函數內部定義了一個局部變量name,當我們調用函數Display_Name()時,它可以獲取到其內部局部變量name的值并將其打印出來。那么我們是否可以在函數外部訪問該變量呢?
def Display_Name():name = "Tom"print(name) print(name) >>> NameError: name 'name' is not defined發現程序報錯了,并指明name沒有定義,這是為什么呢?不難發現name的定義在函數Display_Name()內部,其生命周期也即在調用Display_Name()函數時有效,并且在Display_Name()函數執行完畢時,該變量就會被銷毀,所以在函數外部調用該變量時,其生命周期已經終結,所以并不會存在name這個變量。那我是否可以指定一個變量在程序的任何地方都可以訪問呢?其實是可以的,我們使用全局變量即可:
name = "Jon" def Display_Name():name = "Tom"print(name) Display_Name() print(name) >>> Tom >>> Jon可以發現現在沒有報錯,那為什么調用Display_Name()函數顯示Tom,而在函數外部打印name變量顯示Jon呢,是因為Python在調用函數的時候,首先會檢驗是否存在函數內的局部變量,若存在則調用該局部變量,若不存在才會去看是否存在全局變量。所以在調用函數時,局部變量的優先級高于全局變量。如果我們注釋掉函數內部的name定義便會出現下述情況:
name = "Jon" def Display_Name():# name = "Tom"print(name) Display_Name() >>> Jon此時在調用函數時,他發現不存在名為name的局部變量,所以去搜尋是否存在名為name的全局變量,如果存在的話就用全局變量的值即可,如果不存在則報錯。
以上便是作用域的全部內容,感謝大家的收藏、點贊、評論。我們下一節將介紹args參數(*args),敬請期待~
總結
以上是生活随笔為你收集整理的Python编程基础:第二十四节 作用域Scope的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python编程基础:第二十三节 嵌套函
- 下一篇: Python编程基础:第二十五节 arg