小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

初識 Python: global 關(guān)鍵字 | Linux 中國

 太極混元天尊 2018-04-24
在 Python 中,global 關(guān)鍵字允許你修改當(dāng)前范圍之外的變量。它用于創(chuàng)建全局變量并在本地上下文中更改變量。
-- Programiz



致謝
編譯自 | https://www./python-programming/global-keyword 
 作者 | Programiz
 譯者 | MjSeven ?? ?? ?? 共計翻譯:28 篇 貢獻(xiàn)時間:80 天

在讀這篇文章之前,確保你對 Python 全局、本地和非本地變量[1] 有一定的基礎(chǔ)。

global 關(guān)鍵字簡介

在 Python 中,global 關(guān)鍵字允許你修改當(dāng)前范圍之外的變量。它用于創(chuàng)建全局變量并在本地上下文中更改變量。

global 關(guān)鍵字的規(guī)則

在 Python 中,有關(guān) global 關(guān)鍵字基本規(guī)則如下:

? 當(dāng)我們在一個函數(shù)中創(chuàng)建一個變量時,默認(rèn)情況下它是本地變量。
? 當(dāng)我們在一個函數(shù)之外定義一個變量時,默認(rèn)情況下它是全局變量。你不必使用 global 關(guān)鍵字。
? 我們使用 global 關(guān)鍵字在一個函數(shù)中來讀寫全局變量。
? 在一個函數(shù)外使用 global 關(guān)鍵字沒有效果。

使用 global 關(guān)鍵字(含示例)

我們來舉個例子。

示例 1:從函數(shù)內(nèi)部訪問全局變量

  1. c = 1 # 全局變量

  2. def add():

  3.    print(c)

  4. add()

運行程序,輸出為:

  1. 1

但是我們可能有一些場景需要從函數(shù)內(nèi)部修改全局變量。

示例 2:在函數(shù)內(nèi)部修改全局變量

  1. c = 1 # 全局變量

  2. def add():

  3.    c = c + 2 # c 增加 2

  4.    print(c)

  5. add()

運行程序,輸出顯示錯誤:

  1. UnboundLocalError: local variable 'c' referenced before assignment

這是因為在函數(shù)中,我們只能訪問全局變量但是不能修改它。

解決的辦法是使用 global 關(guān)鍵字。

示例 3:使用 global 在函數(shù)中改變?nèi)肿兞?/p>

  1. c = 0 # global variable

  2. def add():

  3.    global c

  4.    c = c + 2 # c 增加 2

  5.    print('Inside add():', c)

  6. add()

  7. print('In main:', c)

運行程序,輸出為:

  1. Inside add(): 2

  2. In main: 2

在上面的程序中,我們在 add() 函數(shù)中定義了 c 將其作為全局關(guān)鍵字。

然后,我們給變量 c 增加 2,即 c = c + 2。之后,我們調(diào)用了 add() 函數(shù)。最后,打印全局變量 c。

正如我們所看到的,在函數(shù)外的全局變量也發(fā)生了變化,c = 2。

Python 模塊中的全局變量

在 Python 中,我們創(chuàng)建一個單獨的模塊 config.py 來保存全局變量并在同一個程序中的 Python 模塊之間共享信息。

以下是如何通過 Python 模塊共享全局變量。

示例 4:在Python模塊中共享全局變量

創(chuàng)建 config.py 文件來存儲全局變量

  1. a = 0

  2. b = 'empty'

創(chuàng)建 update.py 文件來改變?nèi)肿兞?/p>

  1. import config

  2. config.a = 10

  3. config.b = 'alphabet'

創(chuàng)建 main.py 文件來測試其值的變化

  1. import config

  2. import update

  3. print(config.a)

  4. print(config.b)

運行 main.py,輸出為:

  1. 10

  2. alphabet

在上面,我們創(chuàng)建了三個文件: config.pyupdate.py 和 main.py。

在 config.py 模塊中保存了全局變量 a 和 b。在 update.py 文件中,我們導(dǎo)入了 config.py 模塊并改變了 a 和 b 的值。同樣,在 main.py 文件,我們導(dǎo)入了 config.py 和 update.py 模塊。最后,我們打印并測試全局變量的值,無論它們是否被改變。

在嵌套函數(shù)中的全局變量

以下是如何在嵌套函數(shù)中使用全局變量。

示例 5:在嵌套函數(shù)中使用全局變量

  1. def foo():

  2.    x = 20

  3.    def bar():

  4.         global x

  5.         x = 25

  6.    print('Before calling bar: ', x)

  7.    print('Calling bar now')

  8.    bar()

  9.    print('After calling bar: ', x)

  10. foo()

  11. print('x in main : ', x)

輸出為:

  1. Before calling bar: 20

  2. Calling bar now

  3. After calling bar: 20

  4. x in main : 25

在上面的程序中,我們在一個嵌套函數(shù) bar() 中聲明了全局變量。在 foo() 函數(shù)中, 變量 x 沒有全局關(guān)鍵字的作用。

調(diào)用 bar() 之前和之后, 變量 x 取本地變量的值,即 x = 20。在 foo() 函數(shù)之外,變量 x 會取在函數(shù) bar() 中的值,即 x = 25。這是因為在 bar() 中,我們對 x 使用 global 關(guān)鍵字創(chuàng)建了一個全局變量(本地范圍)。

如果我們在 bar() 函數(shù)內(nèi)進(jìn)行了任何修改,那么這些修改就會出現(xiàn)在本地范圍之外,即 foo()


via: https://www./python-programming/global-keyword

作者:programiz[3] 譯者:MjSeven 校對:wxy

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多