Python3學習筆記 10 變數的作用域

2021-08-31 15:50:59 字數 1289 閱讀 5256

一、變數的作用域

python的作用域一共有4種,分別是:

l (local) 區域性作用域

e (enclosing) 閉包函式外的函式中

g (global) 全域性作用域

b (built-in) 內建作用域

以 l –> e –> g –>b 的規則查詢,即:在區域性找不到,便會去區域性外的區域性找(例如閉包),再找不到就會去全域性找,再者去內建中找。

#內建作用域

a = int(3.2)

#全域性作用域

b = 0

def outer():

#閉包函式外的函式中

c = 10

def inner():

#區域性作用域

d = 100

python 中只有模組(module),類(class)以及函式(def、lambda)才會引入新的作用域,其它的**塊(如 if/elif/else、try/except、for/while等)是不會引入新的作用域的,也就是說這些語句內定義的變數,外部也可以訪問

二、全域性變數和區域性變數

定義在函式內部的變數擁有乙個區域性作用域,定義在函式外的擁有全域性作用域。

區域性變數只能在其被宣告的函式內部訪問,而全域性變數可以在整個程式範圍內訪問。

例:a = 0 #全域性變數

def demo():

b = 10 #區域性變數

三、global 和 nonlocal關鍵字

當內部作用域想修改外部作用域的變數時,就要用到global和nonlocal關鍵字了。

例:a = 0

def demo():

global a #使用global關鍵字宣告

print(a)

a = 100 #修改a的值

print(a)

demo()

輸出結果如下:

0100

如果要修改巢狀作用域(enclosing 作用域,外層非全域性作用域)中的變數則需要 nonlocal 關鍵字了

例:def outer():

a = 0

def inner():

nonlocal a #使用nonlocal關鍵字宣告

print(a) #輸出修改之前的值

a = 100 #修改a的值

print(a) #輸出修改後的值

inner() #呼叫內部函式

print(a) #輸出呼叫內部函式後,外部函式中a的值

outer()

輸出結果如下:

0100

100

Python3學習筆記

最近在起步學python,聚合一下這個過程中蒐集的資源和對一些基本知識做個小總結,語法基於python3,方便以後查詢。python官方文件 不錯的基礎課程 基本語法 演算法 建模 練習 以下是整理常用可能遺忘的基礎點 python3中的輸入是input 獲得使用者輸入的字串 a input ple...

python3學習筆記

redis訊息佇列的使用 coding utf 8 created on tue mar 26 15 58 34 2019 author admin import redis class redisqueue object def init self,name,namespace queue red...

python3 學習筆記

python3學習筆記 python基礎 輸出 print 括號中加上想要輸出的資料,就可以將指定內容輸出至螢幕。1.輸出的時候要注意資料型別。字串,整數等等 2.括號中可以包含多個字串,使用逗號隔開就可以了。但是每次輸出遇到這個連線逗號的時候都會輸出乙個空格。3.括號中的內容也可以是變數名和計算公...