日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python学习笔记010——作用域

發布時間:2025/7/14 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python学习笔记010——作用域 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 作用域的分類

全局變量:在文件中所有函數外部創建的變量,整個文件可見

局部變量:在函數、類等內部創建的變量且僅用在函數內部的變量;

? ? ? ? ? ? ? ? ? 函數的形參也是局部變量。


注:所有的變量必須是先創建,再使用。

x = 100 def func():x += 1print (' x =', x)return func()

運行該段代碼會報錯

Traceback (most recent call last):File "test.py", line 6, in <module>func()File "test.py", line 3, in funcx += 1 UnboundLocalError: local variable 'x' referenced before assignment

報錯原因:變量x先使用后定義。

當一個變量已經存在于局部變量時,如果提前調用相同“名字”的變量,系統只會在局部中找該變量,但是,變量確實后定義的,就會報錯。

2 四個作用域LEGB

2.1?嵌套函數(閉包) 作用域 Enclosing

也可稱為非局部-非全局變量,必須在嵌套函數中使用。

當出現多個函數嵌套時,(內)二層沒有找到該已定義變量,則繼續在(內)三層中找,直到找到為準,當最后一層函數內仍沒有找到該已定義變量,則直接報錯

var = 100 def func1():nonlocal varvar = 200print(var) func1()

輸出

File "test.py", line 3nonlocal var SyntaxError: no binding for nonlocal 'var' found

?

如兩個嵌套函數,內層函數可能搜索外層函數的命名空間,但外層函數的命名空間對內層函數而言既非局部也非全局。

var = 100 def func1():var = 200print("func1:", var)def func2():nonlocal varvar += 1print("func2:", var)func2() print("func1 執行 func2 之后", var) func1()

輸出

func1 執行 func2 之后 100 func1: 200 func2: 201

該變量和全局變量一樣,不能在形參中出現

2.2?內置作用域 Built-in

Python __builtin__ 模塊, 包含了內建的變量/關鍵字等。
如內置變量和函數。?
如?print??

2.3全局變量global

全局變量的標志是global

def func():global yy =100return yprint(func())

輸出結果:100

def func():global yreturn yprint(func())

輸出結果

Traceback (most recent call last):File "test.py", line 5, in <module>print(func())File "test.py", line 3, in funcreturn y NameError: name 'y' is not defined

參數y沒有被定義。

global只是聲明了一個變量是全局變量,但是沒有對該函數定義,也即沒有對該變量進行任何綁定。


?

def func(x):global xx = 20print(x) func(20)

輸出結果

File "test.py", line 2global x SyntaxError: name 'x' is parameter and global

形參變量不能強制轉為全局變量

3?作用域搜索順序

作用域搜索順序遵循 LEGB 規則 搜, Local -> Enclosing -> Global ->Built-in 即: L>E>G>B。

本地 ?閉包本地 ? 全局 ? 內置變量

局部 ?閉包 ?全局 ?內置

?

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Python学习笔记010——作用域的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。