国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
Local vs Global Scope
嵌套函數(shù)中的作用域:nonlocal 的使用
修改全局變量要用 global
總結(jié)幾個常見注意事項
首頁 后端開發(fā) Python教程 Python函數(shù)可變范圍

Python函數(shù)可變范圍

Jul 12, 2025 am 02:49 AM
python 變量作用域

在 Python 中,函數(shù)內(nèi)部定義的變量是局部變量,僅在函數(shù)內(nèi)有效;外部定義的是全局變量,可在任何地方讀取。1. 局部變量隨函數(shù)執(zhí)行結(jié)束被銷毀;2. 函數(shù)可訪問全局變量但不能直接修改,需用 global 關(guān)鍵字;3. 嵌套函數(shù)中若要修改外層函數(shù)變量,需使用 nonlocal 關(guān)鍵字;4. 同名變量在不同作用域互不影響;5. 修改全局變量時必須聲明 global,否則會引發(fā) UnboundLocalError 錯誤。理解這些規(guī)則有助于避免 bug 并寫出更可靠的函數(shù)。

Python variable scope in functions

在 Python 中,函數(shù)內(nèi)部定義的變量默認是局部變量(local variable),而函數(shù)外部定義的變量是全局變量(global variable)。理解變量作用域?qū)τ趯懞煤瘮?shù)、避免 bug 非常關(guān)鍵。

Python variable scope in functions

Local vs Global Scope

當你在一個函數(shù)內(nèi)部定義一個變量,比如這樣:

def my_func():
    x = 10

這里的 x 是局部變量,只能在 my_func() 內(nèi)部訪問。一旦函數(shù)執(zhí)行結(jié)束,這個變量就會被銷毀。

Python variable scope in functions

而如果你在函數(shù)外面定義了一個變量,它就是全局變量,可以在任何地方讀?。ǖ荒苤苯有薷?,除非使用 global 關(guān)鍵字)。

舉個例子:

Python variable scope in functions
y = 5

def show_y():
    print(y)  # 可以正常打印 5

show_y()

這說明函數(shù)可以訪問全局變量,但如果你想在函數(shù)里修改它,就得用 global y 聲明一下。


嵌套函數(shù)中的作用域:nonlocal 的使用

有時候你會在函數(shù)里面再定義一個函數(shù),這時候就涉及到嵌套作用域。比如:

def outer():
    a = "outer"

    def inner():
        a = "inner"
        print(a)

    inner()
    print(a)

上面這段代碼會輸出:

inner
outer

因為 inner() 里的 a 是它自己的局部變量,不會影響到 outer() 中的 a。

但如果你希望在 inner() 中修改外層函數(shù)的變量,就需要用 nonlocal

def outer():
    a = "outer"

    def inner():
        nonlocal a
        a = "modified"

    inner()
    print(a)  # 輸出 modified

記住一點:nonlocal 只能在嵌套函數(shù)中使用,而且綁定的是離它最近的一層外層變量。


修改全局變量要用 global

如果你在函數(shù)里想修改全局變量,必須加上 global,否則 Python 會認為你在定義一個新的局部變量。

看這個例子:

count = 0

def increment():
    global count
    count  = 1

increment()
print(count)  # 輸出 1

如果不加 global count,運行時會報錯:UnboundLocalError: local variable 'count' referenced before assignment。

所以只要你想改全局變量,別忘了聲明它是 global。


總結(jié)幾個常見注意事項

  • 函數(shù)能讀取全局變量,但不能直接修改,除非用 global
  • 局部變量只在定義它的那個函數(shù)內(nèi)有效
  • 嵌套函數(shù)中要用 nonlocal 才能修改外層函數(shù)的變量
  • 同名變量在不同作用域中互不影響(比如全局有個 x,函數(shù)里也有個 x,它們不是同一個)

基本上就這些。作用域看起來不復雜,但稍不注意就容易出錯,特別是在多層嵌套或多個函數(shù)操作相同變量的時候。

以上是Python函數(shù)可變范圍的詳細內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻,版權(quán)歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動的應用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機

Video Face Swap

Video Face Swap

使用我們完全免費的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

您如何連接到Python中的數(shù)據(jù)庫? 您如何連接到Python中的數(shù)據(jù)庫? Jul 10, 2025 pm 01:44 PM

toconnecttoadatabaseinpython,usetheappropriatelibraryforthedatabasetype.1.forsqlite,useqlite3withConnect()andManageWithCurso randcommit.2.formysql,intastmysql-connector-pythonandprovidecredecredecredentialsinconnect()。3.forPostgresql,installpsycopg2andconfigu

python def vs lambda Deep Dive python def vs lambda Deep Dive Jul 10, 2025 pm 01:45 PM

def適用于復雜函數(shù),支持多行、文檔字符串和嵌套;lambda適合簡單匿名函數(shù),常用于參數(shù)傳函數(shù)的場景。選def的情況:①函數(shù)體多行;②需文檔說明;③被多處調(diào)用。選lambda的情況:①一次性使用;②無需名字或文檔;③邏輯簡單。注意lambda延遲綁定變量可能引發(fā)錯誤,且不支持默認參數(shù)、生成器或異步。實際應用中根據(jù)需求靈活選擇,清晰優(yōu)先。

如何在python中調(diào)用父班啟動? 如何在python中調(diào)用父班啟動? Jul 10, 2025 pm 01:00 PM

在Python中,調(diào)用父類的__init__方法主要有兩種方式。1.使用super()函數(shù),這是現(xiàn)代且推薦的方法,它使代碼更清晰,并自動遵循方法解析順序(MRO),例如super().__init__(name)。2.直接調(diào)用父類的__init__方法,如Parent.__init__(self,name),這在需要完全控制或處理舊代碼時有用,但不會自動遵循MRO。在多重繼承情況下,應始終一致地使用super()以確保正確的初始化順序和行為。

在Python中訪問嵌套的JSON對象 在Python中訪問嵌套的JSON對象 Jul 11, 2025 am 02:36 AM

在Python中訪問嵌套JSON對象的方法是先明確結(jié)構(gòu),再逐層索引。首先確認JSON的層級關(guān)系,例如字典嵌套字典或列表;接著使用字典鍵和列表索引逐層訪問,如data"details"["zip"]獲取zip編碼,data"details"[0]獲取第一個愛好;為避免KeyError和IndexError,可用.get()方法設置默認值,或封裝函數(shù)safe_get實現(xiàn)安全訪問;對于復雜結(jié)構(gòu),可遞歸查找或使用第三方庫如jmespath處理。

如何繼續(xù)在Python中繼續(xù)循環(huán) 如何繼續(xù)在Python中繼續(xù)循環(huán) Jul 10, 2025 pm 12:22 PM

在Python的for循環(huán)中,使用continue語句可跳過當前循環(huán)的某些操作并進入下一輪循環(huán)。當程序執(zhí)行到continue時,會立刻結(jié)束當前這一輪循環(huán),跳過后續(xù)代碼,開始下一次循環(huán)。例如,在遍歷數(shù)字范圍時排除特定值、數(shù)據(jù)清洗時跳過無效條目、將不符合條件的情況提前跳過以使主邏輯更清晰等場景均適用。1.跳過特定值:如遍歷列表時排除不需要處理的項;2.數(shù)據(jù)清洗:讀取外部數(shù)據(jù)時跳過異?;驘o效數(shù)據(jù);3.條件判斷前置:提前過濾非目標數(shù)據(jù),提升代碼可讀性。注意事項包括:continue只影響當前循環(huán)層,不會

如何刮擦需要使用Python登錄的網(wǎng)站 如何刮擦需要使用Python登錄的網(wǎng)站 Jul 10, 2025 pm 01:36 PM

ToscrapeawebsitethatrequiresloginusingPython,simulatetheloginprocessandmaintainthesession.First,understandhowtheloginworksbyinspectingtheloginflowinyourbrowser'sDeveloperTools,notingtheloginURL,requiredparameters,andanytokensorredirectsinvolved.Secon

如何用Python和Pandas解析HTML表 如何用Python和Pandas解析HTML表 Jul 10, 2025 pm 01:39 PM

是的,你可以使用Python和Pandas解析HTML表格。首先,使用pandas.read_html()函數(shù)提取表格,該函數(shù)可將網(wǎng)頁或字符串中的HTML元素解析為DataFrame列表;接著,若表格無明確列標題,可通過指定header參數(shù)或手動設置.columns屬性修復;對于復雜頁面,可結(jié)合requests庫獲取HTML內(nèi)容或使用BeautifulSoup定位特定表格;注意JavaScript渲染、編碼問題及多表識別等常見陷阱。

如何交換兩個變量而沒有python中的臨時變量? 如何交換兩個變量而沒有python中的臨時變量? Jul 11, 2025 am 12:36 AM

Python中交換兩個變量無需臨時變量,最常用的方法是使用元組解包:a,b=b,a。該方法先對右側(cè)表達式求值生成元組(b,a),再將其解包到左側(cè)變量,適用于所有數(shù)據(jù)類型;此外還可使用算術(shù)運算(加減或乘除)交換數(shù)值型變量,但僅限數(shù)字且可能引入浮點問題或溢出風險;也可用異或運算交換整數(shù),通過三次異或操作實現(xiàn),但可讀性差,通常不推薦。綜上,元組解包是最簡潔、通用且推薦的方式。

See all articles