在python中,變量的作用域決定了變量在哪些位置可以被訪問。一個程序中的變量并不是所有的地方都可以訪問的,其訪問權限決定于變量的賦值位置。python中有兩種最基本的變量作用域:局部作用域和全局作用域。局部變量是在函數內部定義的變量,只能在其被聲明的函數內部訪問。而全局變量則是在函數外定義的變量,可以在整個程序的范圍內被訪問。局部變量只有在其被聲明的函數內部才能被訪問,全局變量則可以在程序的任何地方被訪問。變量的作用域對于程序的正確性和可讀性非常重要,需要在編寫程序時注意變量的賦值位置以及其作用域。
變量的作用域可分為以下幾種狀態:
- L(Local):局部作用域
- E(Enclosing):閉包函數外的函數中
- G(Global):全局作用域
- B(Built-in):內建作用域
變量的屬性與變量的執行依據:
- 變量的先后順序是:L –> E –> G –>B 的規則查找
- 在子程序中定義的變量稱為局部變量
- 在程序的一開始定義的變量稱為全局變量
- 全局變量作用域是整個程序,局部變量作用域是定義該變量的子程序
- 當全局變量與局部變量同名時:在定義局部變量的子程序內,局部變量起作用,在其它地方全局變量起作用
- 當內部作用域想修改外部作用域的變量時,就要用到global和nonlocal關鍵字了
- 局部變量只能在其被聲明的函數內部訪問,而全局變量可以在整個程序范圍內訪問
全局變量: 如下定義并使用一個全局變量,來看一下效果吧.
>>> import os
>>> import sys
>>>
>>> sum=100 #這就是一個全局變量
>>>
>>> def print_sum():print("函數中調用sum: ",sum)>>> print_sum() #函數中可以讀取到
函數中調用sum: 100
>>>
>>> print("函數外調用sum: ",sum) #外部依然可以讀取到
函數外調用sum: 100
局部變量: 如下定義并使用一個局部變量,來看一下效果吧.
>>> import sys
>>> import os
>>>
>>> def print_sum():sum=100print("函數中調用sum: ",sum)>>> print_sum()
函數中調用sum: 100
>>> print("函數外調用sum: ",sum)
函數外調用sum: <built-in function sum>
局部轉全局: 將一個局部變量通過global
關鍵字,轉換為全局變量.
>>> import os
>>> import sys
>>>
>>> def print_num():global numnum=1000print("函數內調用: ",num)>>> print_num()
函數內調用: 1000
>>>
>>> print("函數外調用: ",num)
函數外調用: 1000
外層非全局: 如果要修改嵌套作用域(enclosing 作用域,外層非全局作用域)中的變量則需要nonlocal
關鍵字聲明一下.
>>> import sys
>>>
>>> def outer():num=100def inner():nonlocal num #聲明成外層非全局作用域num=1000print("inner層:",num)inner()print("outer層:",num)>>> outer()
inner層: 1000
outer層: 1000
本文作者: 王瑞
本文鏈接: https://www.lyshark.com/post/43aec37f.html
版權聲明: 本博客所有文章除特別聲明外,均采用 BY-NC-SA 許可協議。轉載請注明出處!