亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
介紹
概述
目錄
Python中有什麼變量?
全局變量
本地變量
命名空間是什麼?
Python中有哪些可變範圍?
LEGB規(guī)則是什麼?
Python可變範圍如何?
1。在本地範圍中使用全局變量
輸出
2.在本地範圍中使用本地變量
3。修改本地範圍內(nèi)的全局變量
4。使用聲明修改本地範圍內(nèi)部的全局變量
5。使用功能修改全局變量inside本地範圍
什麼是嵌套功能?
變量的封閉範圍是什麼?
7.修改封閉範圍內(nèi)無聲明的全局變量
8。使用聲明在本地範圍內(nèi)修改嵌套變量
結(jié)論
常見問題
首頁 科技週邊 人工智慧 Python名稱空間和可變範圍的綜合指南

Python名稱空間和可變範圍的綜合指南

Apr 12, 2025 pm 12:00 PM

介紹

了解Python函數(shù)中變量的名稱空間,範圍和行為對於有效編寫和避免運行時錯誤或異常至關重要。在本文中,我們將深入研究名稱空間和Python變量範圍的各個方面,並了解Python如何詳細管理本地,全局和封閉變量。

我們已經(jīng)詳細討論了Python的功能,可以建立。 Python使用抽象原理隱藏複雜的邏輯並僅公開必要的輸出,分解產(chǎn)生模塊化,可讀和可重複使用的功能。

這些原理足夠明顯,可以理解Python如何處理其可變範圍用於函數(shù)定義和嵌套功能,我們將通過詳細的示例探索。到本文結(jié)尾,您應該清楚地了解這些概念以及如何在程序中有效地應用它們。

Python名稱空間和可變範圍的綜合指南

概述

  • Python的命名空間和可變範圍對於有效的預防編碼和誤差至關重要。
  • 本文探討了python中的本地,全局和封閉變量的行為。
  • LEGB規(guī)則描述了Python在不同範圍內(nèi)的變量名稱搜索。
  • 實際示例證明了全球和局部變量的使用和修改。
  • 涵蓋了嵌套功能和封閉範圍,強調(diào)了非本地關鍵字。

目錄

  • Python中有什麼變量?
    • 全局變量
    • 本地變量
  • 命名空間是什麼?
  • Python中有哪些可變範圍?
  • LEGB規(guī)則是什麼?
  • Python可變範圍如何?
    • 1。在本地範圍中使用全局變量
    • 2.在本地範圍中使用本地變量
    • 3。修改本地範圍內(nèi)的全局變量
    • 4.使用聲明對本地範圍內(nèi)部內(nèi)部變量進行修改
    • 5。使用功能修改全局變量inside本地範圍
  • 什麼是嵌套功能?
  • 變量的封閉範圍是什麼?
    • 7.修改封閉範圍內(nèi)無聲明的全局變量
    • 8。使用聲明在本地範圍內(nèi)修改嵌套變量
  • 常見問題

Python中有什麼變量?

Python中的變量是存儲數(shù)據(jù)或值(例如INT,F(xiàn)loat,Str,Bool等)的容器。存儲變量且也可以訪問的內(nèi)存位置稱為變量的theScope。

Python中有兩種類型的變量,即:

全局變量

  • 這些變量屬於主要程序的範圍。
  • 主程序不能使用本地變量,因為它僅適用於函數(shù)。

本地變量

  • 這些變量屬於功能範圍。
  • 同樣,當未在本地範圍內(nèi)定義本地變量時,本地變量可以使用函數(shù)內(nèi)部的全局變量。

另請閱讀:Python中的可變與不變的物體

命名空間是什麼?

Python名稱空間是Aspace或字典,將標識符(通常稱為變量名稱)作為其鍵及其各自對像作為內(nèi)存空間中的值。 Python編程語言具有44種類型的名稱空間,即:

  • 內(nèi)置名稱空間
  • 全局名稱空間
  • 封閉名稱空間
  • 本地名稱空間

我們很快將研究不同的示例,以更好地理解這個概念。但是在此之前,了解上面提到的可變範圍確實很重要。

Python中有哪些可變範圍?

在Python中,範圍是指直接訪問變量的程序區(qū)域或文本區(qū)域。在執(zhí)行過程中的任何時候,都有:

  • 本地範圍:這是函數(shù)內(nèi)定義的最內(nèi)在範圍。對於此範圍,Python尋找局部變量。
  • 封閉範圍:這些是嵌套函數(shù)的範圍。它們包含既不局部也不全球的非本地變量。
  • 全局範圍:此範圍包含在模塊級別定義的變量,並且可以在整個模塊中訪問。

注意:您在程序中創(chuàng)建這些用戶定義的範圍以有效地運行它。但是,Python的內(nèi)置變量也具有稱為內(nèi)置範圍的範圍。

  • 內(nèi)置範圍:這是Python提供的所有預定義關鍵字或方法的範圍。因此,一旦Python解釋器啟動,這些都可以為您提供。另外,請注意,這些範圍永遠不會被刪除,並且可以在整個模塊中訪問。

LEGB規(guī)則是什麼?

現(xiàn)在,您對命名空間和可變範圍有基本的了解。讓我們更深入地了解如何用Python編程語言應用範圍。有一個常見的縮寫,legb規(guī)則,它可以實現(xiàn)廣闊的,封閉的,全球和建築物。

LEGB規(guī)則指出,解釋器可以從內(nèi)而外搜索標識符,這意味著它首先在本地範圍中尋找可變名稱或名稱空間開始。如果在那裡沒有名稱空間,它將朝著程序的封閉範圍邁進。 Ext,它檢查全局範圍以找到名稱空間。最後,如果仍未找到標識符,解釋器會查看Python提供的內(nèi)置範圍。

Python名稱空間和可變範圍的綜合指南

此外,如果解釋器在這些位置的任何一個中都找不到名稱,則Python提出了“ nameError”異常,這意味著該變量在程序中未定義。

同樣,要記住,您必須從當前範圍的LEGB規(guī)則的層次結(jié)構(gòu)上向上移動。

另請閱讀:高級Python編程的綜合指南

Python可變範圍如何?

現(xiàn)在,讓我們從所有這些示例中進行一對一的了解,以深入了解所有這些概念:

1。在本地範圍中使用全局變量

為了理解這一點,讓我們以一個例子為例,這裡的函數(shù)` g(y) `不僅打印了全局變量` x```x ',還將其修改為` x 1 '。

現(xiàn)在,由於在g(y)'中未定義X` ,因此python獲取了全局變量` x '的值。

 def g(y):
  打印(x)
  打?。▁ 1)

#由於x不在本地範圍中
x = 1
g(x)#全局本地變量
打?。▁)#全局變量

輸出

1<br><br> 2<br><br> 1

輸出顯示了“ x ”和“ x 1 ”的值確認全局變量X`保持不變,但本地範圍已使用它來正確輸出結(jié)果。

2.在本地範圍中使用本地變量

現(xiàn)在,查看此示例,在這裡我們有一個函數(shù)定義` g(y) ```g( y )```g'g'g',name x`定義為局部變量,也修改了。

 def g(y):
  x = 10#本地變量
  x = 1
  打?。▁)


x = 1#全局變量
g(x)
打?。▁)

輸出

11<br><br> 1

作為證據(jù),全局“ X ”保持不變,局部變量使用其局部範圍變量來打印陳述,如預期的那樣,通過函數(shù)通過函數(shù)將11作為輸出和1個輸出,如所預期的。

另請閱讀:Python內(nèi)置數(shù)據(jù)結(jié)構(gòu)的綜合指南

3。修改本地範圍內(nèi)的全局變量

但是,是否可以在不將其聲明為`` global ''的情況下修改全局變量'?

答案是否!您不能從本地範圍修改任何全局變量值,因為這樣做將導致錯誤。

 def h(y):

  #功能可以使用全局變量,如果沒有任何
  x = 10#,但無法更改本地變量內(nèi)的全局值

x = 1
H(x)
打?。▁)

輸出

Unboundlocalerror Trackback(最近的最新電話)<br><br> <ipython-input-3-130c677cc9ab>在<cell line>()<br><br> 3<br><br> 4 x = 1<br><br> ----> 5 h(x)<br><br> 6印刷(x)<br><br> <ipython-input-3-130c677cc9ab>在h(y)中<br><br> 1def H(y):<br><br> -----> 2 x = 10<br><br> 3<br><br> 4 x = 1<br><br> 5 h(x)</ipython-input-3-130c677cc9ab></cell></ipython-input-3-130c677cc9ab>

unboundlocalerror:分配前引用的本地變量

這會導致`` unbounlocalerror '',因為由於分配操作,python將x視為局部變量,但尚未在本地初始化。另外,儘管本地變量可以訪問全局變量,但您無法更改全局變量(您只能讀取,而不是寫)。

另請閱讀:初學者Python編程的基本面

4。使用聲明修改本地範圍內(nèi)部的全局變量

但是,由於我一直告訴您Python實際上是一種甜美的語言,即使不建議對全局變量進行任何修改或更改。這並不意味著Python並不能給您這個功能,因為使用相同的關鍵字將`X'稱為“ global”,該函數(shù)可以修改全局變量`x` x'。

 def h(y):
  全局x?,F(xiàn)在可以更改本地變量內(nèi)的全局值
  #但是,這不是編碼的好方法,您應該專注於減少此全局關鍵字用法
  x = 10

x = 1
H(x)
打印(x)

輸出

11

輸出確認X`已在全球更新。但是,請記住,更改將影響整個程序,因為修改主函數(shù)也會影響其他功能,這不是很好的編程實踐。

5。使用功能修改全局變量inside本地範圍

另外,您可以通過將x x添加到10中來修改函數(shù)內(nèi)的全局變量。它將打印新值並返回。

注意:這並不意味著您正在修改全局變量本身,無論如何,如果沒有``global''關鍵字。

 def g(x):
  x = 10
  打?。ā霸趂(x)中:x =”,x)
  返回x#返回f(x)

x = 2
z = g(x)
打印(“在主要程序範圍:z =”,z)
打?。ā霸谥饕绦蚬爣簒 =”,x)

輸出

在f(x)中:x = 12<br><br>在主要程序範圍中:z = 12<br><br>在主要程序範圍中:x = 2

在這裡,全局X`保持不變,而返回的值` z`是新的更新值。

什麼是嵌套功能?

在另一個` def`函數(shù)中定義的函數(shù)稱為嵌套函數(shù)內(nèi)部函數(shù)。

這是一個嵌套功能的示例,可以更好地理解:

 def f():
  def g():
    打?。ā皟?nèi)部功能g”)
  g()
  打印(“內(nèi)部功能F”)

F()

輸出

內(nèi)部功能g<br><br>內(nèi)部功能f

注意:嵌套函數(shù)`` g`在函數(shù)`` f ''中調(diào)用,從兩個函數(shù)中打印消息。呼叫函數(shù)`` g'f'f'flresults以外的錯誤,因為在全局範圍中未定義`` g '。

 g()#此功能未在函數(shù)f之外定義

輸出

TypeError Trackback(最近的最新通話)<br><br> <ipython-input-8-5fd69ddb5074>在<cell>()<br><br> -----> 1 g()<br><br> typeError:g()缺少1所需的位置參數(shù):'x'</cell></ipython-input-8-5fd69ddb5074>

變量的封閉範圍是什麼?

Python僅與嵌套函數(shù)中定義的名稱(稱為封閉範圍)提供了不同的特殊變量範圍。它也被稱為非本地範圍。當存在局部函數(shù)時,封閉範圍是外部函數(shù)的範圍,該函數(shù)是內(nèi)部或嵌套函數(shù)。

 def f():
  x = 1
  def g():
    打?。ā皟?nèi)部功能g”)
    打?。▁)
  g()
  打?。ā皟?nèi)部功能F”)
  
F()

此變量`x`都存在在封閉範圍內(nèi),您也可以在本地範圍中使用,如上所述。這就是IT輸出:

輸出

內(nèi)部功能g<br><br> 1<br><br>內(nèi)部功能f

現(xiàn)在,讓我們繼續(xù)前進,更好地理解這個新範圍。

7.修改封閉範圍內(nèi)無聲明的全局變量

同樣,在嵌套函數(shù)內(nèi)修改全局變量`是不可能的

 def g(x):
  def H():
    x = 1
    打?。?in H(x):x =',x)
  x = x 1
  打?。?in g(x):x =',x)
  H(x)
  返回x

x = 3
z = g(x)
打?。?在主要程序範圍:x =',x)
打?。?在主要程序範圍:z =',z)

輸出

在g(x)中:x = 4<br><br> ----------------------------------------------------------------------------------------------------------------------------<br> TypeError Trackback(最近的最新通話)<br><br> <ipython-input-12-5bcfb2edb396>在<cell line>()<br><br> 9<br><br> 10 x = 3<br><br> ---> 11 z = g(x)<br><br> 12打印('在主要程序範圍:x =',x)<br><br> 13打印('在主要程序範圍:z =',z)<br><br> <ipython-input-12-5bcfb2edb396>在G(x)中<br><br> 5 x = x 1<br><br> 6打印('in g(x):x =',x)<br><br> ----> 7 h(x)<br><br> 8返回x<br><br> 9<br><br> TypeError:g。 <locals> .h()獲得0個位置參數(shù),但給出了1個</locals></ipython-input-12-5bcfb2edb396></cell></ipython-input-12-5bcfb2edb396>

當函數(shù)` h() `時,無需任何參數(shù)而定義,但是`h(x)`被稱為參數(shù)。此外,這將給出一個“ typeError”。儘管封閉變量可以訪問全局變量,但您無法在全局變量中執(zhí)行更改。

8。使用聲明在本地範圍內(nèi)修改嵌套變量

與“全局”關鍵字相似,Python為開發(fā)人員提供了“非局部”關鍵字。這允許嵌套函數(shù)` h` h`可以修改封閉函數(shù)中定義的變量x 。

 def g(x):
  def H():
    非局部x#告訴h()使用x(x)的x
    x = 1
    打?。?in H(x):x =',x)
  x = x 1
  打印('in g(x):x =',x)
  h()#呼叫h()沒有任何參數(shù)
  返回x

x = 3
z = g(x)
打?。?在主要程序範圍:x =',x)
打?。?在主要程序範圍:z =',z)

輸出

在g(x)中:x = 4<br><br>在h(x)中:x = 5<br><br>在主要程序範圍中:x = 3<br><br>在主要程序範圍:z = 5

輸出顯示在兩個函數(shù)中所做的更改,並且全局變量` `X '保持不變。

最後,請注意,根據(jù)范圍定義的位置,每個範圍對應於整個程序中的不同級別訪問級別,並且在代碼中將具有不同的命名空間壽命。

另請閱讀:從頭開始學習數(shù)據(jù)科學的完整的Python教程

結(jié)論

本文探討了Python如何處理本地和全局變量以及嵌套功能。我們了解到,命名空間是Python為開發(fā)人員提供的詞典,您可以從中找到一個可變名稱及其值存儲在Python內(nèi)存範圍中的值。此外,這些範圍分為四種:本地,封閉,全局和內(nèi)置。

這些對於避免命名衝突和跟蹤哪些名稱/標識符是指整個程序不同部分中的哪些對象非常有用。

另外,如果要從本地範圍中修改全局範圍中的變量,則可以使用` global '關鍵字。同樣,您可以使用“非局部”關鍵字來關閉範圍。

  1. 本地範圍:在函數(shù)內(nèi)創(chuàng)建的變量,僅在該函數(shù)內(nèi)訪問,並在函數(shù)返回或提出任何異常時被刪除,即,在編寫函數(shù)時未處理。
  2. 封閉或非本地範圍:在嵌套函數(shù)的外部功能中創(chuàng)建的變量,可供內(nèi)部函數(shù)訪問。
  3. 全局範圍:在' __ -Main __程序中創(chuàng)建的變量,可以在整個程序中訪問,最後直到解釋器結(jié)束。

我希望這可以幫助您獲得撰寫良好生產(chǎn)級代碼的見解,同時遵循與行業(yè)相關的最佳實踐並減少開發(fā)人員定義的例外。但是,這是使我們的程序更加強大的第一步,我們還有更多涵蓋。

因此,請繼續(xù)關注下一篇文章,我們將在其中討論Python編程語言中的文件序列化和避免!

常見問題

Q1。 Python的名稱空間是什麼?

Ans。 Python中的名稱空間組織和管理程序中的名稱或標識符?;旧?,它們的作用就像存儲映射到其對象的名稱的容器或詞典一樣,例如變量和函數(shù)。

Q2。 Python中的LEGB規(guī)則是什麼?

Ans。 Python中的LegB規(guī)則是Python解釋器在使用名稱或通常稱為標識符時抬起頭來的順序。它代表本地,封閉,全球和內(nèi)置:
1。本地:函數(shù)中定義的名稱。
2。封閉:任何封閉功能的本地範圍(嵌套函數(shù))中的名稱。
3。全局:在腳本或模塊的頂層定義的名稱。
內(nèi)置:在Python中預定的名稱,例如`` print '''或` Len '。

Q3。 python中`global'關鍵字的用途是什麼?

Ans。全局關鍵字允許函數(shù)修改全局範圍中定義的變量,並使變量能夠駐留在操作之外。注意:僅僅因為您可以做到這一點,並不意味著您應該(經(jīng)常)使用它,因為這不是一個好的編程實踐。

Q4。為什麼建議最大程度地減少全局變量的使用?

Ans。過度使用全球變量可能會導致難以理解和維護的程序。這也可能導致意外變化,從而使調(diào)試變得更加困難。通常最好使用本地變量並根據(jù)需要傳遞它們。

Q5。嵌套函數(shù)中`非局部`關鍵字的用途是什麼?

Ans。與全局關鍵字相似,Python提供了“非局部”關鍵字來修改封閉變量。非本地關鍵字可以修改嵌套函數(shù)的封閉函數(shù)中定義的變量,從而提供了一種控制嵌套函數(shù)中變量範圍的方法。

以上是Python名稱空間和可變範圍的綜合指南的詳細內(nèi)容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(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)

AGI和AI超級智能將嚴重擊中人類天花板的假設障礙 AGI和AI超級智能將嚴重擊中人類天花板的假設障礙 Jul 04, 2025 am 11:10 AM

讓我們來談談。 對創(chuàng)新AI突破的分析是我正在進行的AI中正在進行的福布斯列覆蓋的一部分,包括識別和解釋各種有影響力的AI複雜性(請參閱此處的鏈接)。 前往Agi和

Kimi K2:最強大的開源代理模型 Kimi K2:最強大的開源代理模型 Jul 12, 2025 am 09:16 AM

還記得今年早些時候破壞了Genai行業(yè)的大量開源中國模型嗎?儘管DeepSeek佔據(jù)了大多數(shù)頭條新聞,但Kimi K1.5是列表中的重要名字之一。模型很酷。

Grok 4 vs Claude 4:哪個更好? Grok 4 vs Claude 4:哪個更好? Jul 12, 2025 am 09:37 AM

到2025年中期,AI“軍備競賽”正在加熱,XAI和Anthropic都發(fā)布了他們的旗艦車型Grok 4和Claude 4。這兩種模型處於設計理念和部署平臺的相反端,但他們卻在

深入探討人工智能如何幫助和危害各行各業(yè) 深入探討人工智能如何幫助和危害各行各業(yè) Jul 04, 2025 am 11:11 AM

我們將討論:公司開始委派AI的工作職能,以及那些最不可能用人工智能替代的角色AI如何重塑行業(yè)和就業(yè),以及企業(yè)和工人的工作方式。

英超聯(lián)賽發(fā)揮了AI播放來增強球迷的體驗 英超聯(lián)賽發(fā)揮了AI播放來增強球迷的體驗 Jul 03, 2025 am 11:16 AM

7月1日,英格蘭頂級足球聯(lián)盟(England)與一家主要科技公司揭示了為期五年的合作,以創(chuàng)建比簡單的亮點捲軸更先進的東西:一種由實時AI驅(qū)動的工具,可為EV提供個性化的更新和互動

今天已經(jīng)在我們中間走了10個驚人的人形機器人 今天已經(jīng)在我們中間走了10個驚人的人形機器人 Jul 16, 2025 am 11:12 AM

但是我們可能甚至不必等10年就可以看到一個。實際上,可以被認為是真正有用的,類人類機器的第一波。 近年來,有許多原型和生產(chǎn)模型從T中走出來

上下文工程是&#039; new&#039;及時的工程 上下文工程是&#039; new&#039;及時的工程 Jul 12, 2025 am 09:33 AM

直到上一年,迅速的工程被認為是與大語言模型(LLM)互動的關鍵技能。然而,最近,LLM在推理和理解能力方面已經(jīng)顯著提高。自然,我們的期望

Chip Ganassi Racing宣布Openai為中俄亥俄州IndyCar贊助商 Chip Ganassi Racing宣布Openai為中俄亥俄州IndyCar贊助商 Jul 03, 2025 am 11:17 AM

Openai是世界上最傑出的人工智能組織之一,將成為由三屆NTT IndyCar系列冠軍和2025 Indianapolis 500冠軍Alex PA驅(qū)動的第10號Chip Ganassi Racing(CGR)本田的主要合作夥伴

See all articles