国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python變量的作用域教程

這篇具有很好參考價值的文章主要介紹了Python變量的作用域教程。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

在寫代碼的時候,免不了要使用變量。但程序中的一個變量并不一定是在哪里都可以被使用,根據(jù)情況不同,會有不同的“有效范圍”。

看這樣一段代碼:

def func(x):
    print ('X in the beginning of func(x): ', x)
    x = 2
    print ('X in the end of func(x): ', x)
     
x = 50func(x)print ('X after calling func(x): ', x)

輸出:

X in the beginning of func(x):  50
X in the end of func(x):  2
X after calling func(x):  50

變量 x 在函數(shù)內(nèi)部被重新賦值。但在調(diào)用了函數(shù)之后,x 的值仍然是50。為什么?

這就得說一下變量的“作用域”:

當函數(shù)內(nèi)部定義了一個變量,無論是作為函數(shù)的形參,或是另外定義的變量,它都只在這個函數(shù)的內(nèi)部起作用。函數(shù)外即使有和它名稱相

同的變量,也沒有什么關(guān)聯(lián)。這個函數(shù)體就是這個變量的作用域。像這樣在函數(shù)內(nèi)部定義的變量被稱為“局部變量”。

要注意的是,作用域是從變量被定義的位置開始。像這樣的寫法是有問題的:

def func():
    print (y)
    y = 2
    print (y)

報錯:

UnboundLocalError: local variable 'y' referenced before assignment

因為在 y = 2 之前,y 并不存在,調(diào)用 y 的值就會出錯。

回到開始那個例子:

在函數(shù) func 外部,定義的變量 x,賦值為 50,作為參數(shù)傳給了函數(shù) func。而在函數(shù) func 內(nèi)部,變量 x 是形參,它的作用域是整個函數(shù)體內(nèi)部。它與外面的那個 x 沒有關(guān)系。只不過它的初始值是由外面那個 x 傳遞過來的。

所以,雖然函數(shù)體內(nèi)部的 x 被重新賦值為 2,也不會影響外面那個 x 的值。

不過有時候,我們希望能夠在函數(shù)內(nèi)部去改變一些變量的值,并且這些變量在函數(shù)外部同樣被使用到。怎么辦?

一種方法是,用 return 把改變后的變量值作為函數(shù)返回值傳遞出來,賦值給對應的變量。比如開始的那個例子,可以在函數(shù)結(jié)尾加上

return x

然后把調(diào)用改為

x = func(x)

還有一種方法,就是使用“全局變量”。

在 Python 的函數(shù)定義中,可以給變量名前加上 global 關(guān)鍵字,這樣其作用域就不再局限在函數(shù)塊中,而是全局的作用域。

通過 global 改寫開始的例子:

def func():
    global x    print ('X in the beginning of func(x): ', x)
    x = 2
    print ('X in the end of func(x): ', x)
     
x = 50func()print ('X after calling func(x): ', x)

輸出:

X in the beginning of func(x):  50
X in the end of func(x):  2
X after calling func(x):  2

函數(shù) func 不再提供參數(shù)調(diào)用。而是通過 global x 告訴程序:這個 x 是一個全局變量。于是函數(shù)中的 x 和外部的 x 就成為了同一個變

量。這一次,當 x 在函數(shù) func 內(nèi)部被重新賦值后,外部的 x 也隨之改變。

前面講的局部變量和全局變量是 Python 中函數(shù)作用域最基本的情況。實際上,還有一些略復雜的情況,比如:

def func():
    print ('X in the beginning of func(x): ', x)    # x = 2
    print ('X in the end of func(x): ', x)
#Python小白學習交流群:153708845     
x = 50func()print ('X after calling func(x): ', x)

輸出:

X in the beginning of func(x):  50
X in the end of func(x):  50
X after calling func(x):  50

程序可以正常運行。雖然沒有指明 global,函數(shù)內(nèi)部還是使用到了外部定義的變量。然而一旦加上

x = 2

這句,程序就會報錯。因為這時候,x 成為一個局部變量,它的作用域從定義處開始,到函數(shù)體末尾結(jié)束。

建議在寫代碼的過程中,顯式地通過 global 來使用全局變量,避免在函數(shù)中直接使用外部變量文章來源地址http://www.zghlxwxcb.cn/news/detail-711297.html

到了這里,關(guān)于Python變量的作用域教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務器費用

相關(guān)文章

  • python教程 入門學習筆記 第3天 編程基礎(chǔ)常識 代碼注釋 變量與常量

    編程基礎(chǔ)常識 一、注釋 1、對代碼的說明與解釋,它不會被編譯執(zhí)行,也不會顯示在編譯結(jié)果中 2、注釋分為:單行注釋和多行注釋 3、用#號開始,例如:#這是我的第一個python程序 4、注釋可以寫在單獨一行,也可以寫在一句代碼后面 5、不想執(zhí)行編譯,又不能刪除的代碼,可

    2024年02月14日
    瀏覽(94)
  • Python 函數(shù)和變量作用域

    Python 函數(shù)和變量作用域

    Python 引用變量的順序:當前作用域局部變量-外層作用域變量-當前模塊中的全局變量-Python內(nèi)置變量。 1、 global global 用來在函數(shù)或其他局部作用域中使用全局變量,如果不對全局變量進行修改,那么可以不使用global;如果想要在函數(shù)或局部作用域中對全局變量進

    2024年04月24日
    瀏覽(21)
  • Python中的變量作用域

    問題: 簡述以下Python中的變量作用域(變量查找順序) 變量的作用域:變量的有效使用范圍 變量的作用域由變量的定義位置決定? Python變量作用域分4種情況: L:Local, 局部作用域 ,即在函數(shù)中定義的變量; E:Enclosed, 嵌套作用域 ,可理解為嵌套的父級函數(shù)的局部作用域,

    2024年02月13日
    瀏覽(22)
  • Python變量:創(chuàng)建、類型、命名規(guī)則和作用域詳解

    變量是用于存儲數(shù)據(jù)值的容器。 創(chuàng)建變量 Python沒有用于聲明變量的命令。 變量在您第一次為其分配值時被創(chuàng)建。 示例 變量不需要聲明為特定類型,并且甚至在設置后可以更改類型。 示例 如果要指定變量的數(shù)據(jù)類型,可以使用類型轉(zhuǎn)換。 示例 獲取類型 您可以使用type()函數(shù)

    2024年02月08日
    瀏覽(18)
  • python 函數(shù)-06-變量&參數(shù)內(nèi)存管理及作用域

    python的參數(shù)傳遞,傳遞的是參數(shù)值而非參數(shù)地址。參數(shù)值被復制后傳遞進函數(shù)。 對于數(shù)值類型的參數(shù)(即不可變類型,整型、浮點、復數(shù)等),在函數(shù)內(nèi)改變參數(shù)值,函數(shù)外面不受影響。 對于容器類型的參數(shù)(即可變類型,列表、字典、字符串等),在函數(shù)內(nèi)改變了容器里

    2024年02月22日
    瀏覽(24)
  • FPGA設計Verilog基礎(chǔ)之數(shù)據(jù)類型的作用和特點、常量和變量的代碼示例詳解

    FPGA設計Verilog基礎(chǔ)之數(shù)據(jù)類型的作用和特點、常量和變量的代碼示例詳解

    注意:后續(xù)技術(shù)分享,第一時間更新,以及更多更及時的技術(shù)資訊和學習技術(shù)資料 ,將在公眾號 CTO Plus 發(fā)布,請關(guān)注公眾號: CTO Plus 在Verilog中,有多種數(shù)據(jù)類型可供使用,包括位向量類型、整數(shù)類型、實數(shù)類型、布爾型、時間類型和字符串類型等。下面詳細介紹Verilog的所

    2024年02月03日
    瀏覽(25)
  • C語言系列(所需基礎(chǔ):大學C語言及格)-1-編譯器/簡單的求和代碼/數(shù)據(jù)類型/變量的分類/變量的作用域和生命周期

    C語言系列(所需基礎(chǔ):大學C語言及格)-1-編譯器/簡單的求和代碼/數(shù)據(jù)類型/變量的分類/變量的作用域和生命周期

    為了方便,我使用的是在線的C語言編譯器進行程序的運行。 鏈接:https://www.bejson.com/runcode/c740/ 效果如下: 分為局部變量和全局變量 說白了,放在main函數(shù)外面的變量為全局變量,其他為局部變量。

    2024年02月19日
    瀏覽(25)
  • Python入門【變量的作用域(全局變量和局部變量)、參數(shù)的傳遞、淺拷貝和深拷貝、參數(shù)的幾種類型 】(十一)

    Python入門【變量的作用域(全局變量和局部變量)、參數(shù)的傳遞、淺拷貝和深拷貝、參數(shù)的幾種類型 】(十一)

    ???作者簡介:大家好,我是愛敲代碼的小王,CSDN博客博主,Python小白 ??系列專欄:python入門到實戰(zhàn)、Python爬蟲開發(fā)、Python辦公自動化、Python數(shù)據(jù)分析、Python前后端開發(fā) ??如果文章知識點有錯誤的地方,請指正!和大家一起學習,一起進步?? ??如果感覺博主的文章還不錯

    2024年02月15日
    瀏覽(22)
  • vscode 的代碼提示有時候有,有時候沒有(python)

    vscode 的代碼提示有時候有,有時候沒有(python)

    vscode 的代碼提示有時候有,有時候沒有。沒有的時候出現(xiàn)如下報錯: Sorry, something went wrong activating IntelliCode support for Python. Please check the “Python” and “VS IntelliCode” output windows for details. 不太清楚為什么,把 IntelliCode 的版本換了別的也不好用。 先存一下,以后遇到解決方法

    2024年02月09日
    瀏覽(115)
  • 【30天python從零到一】---第六天:函數(shù)、變量作用域、函數(shù)的鏈式調(diào)用和遞歸調(diào)用

    【30天python從零到一】---第六天:函數(shù)、變量作用域、函數(shù)的鏈式調(diào)用和遞歸調(diào)用

    ?? 博客主頁:??@披星戴月的賈維斯 ?? 歡迎關(guān)注:??點贊??收藏??留言 ??系列專欄:?? Python專欄 ??請不要相信勝利就像山坡上的蒲公英一樣唾手可得,但是請相信,世界上總有一些美好值得我們?nèi)σ愿?,哪怕粉身碎骨?? ??一起加油,去追尋、去成為更好的自己

    2023年04月14日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包