成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

初識(shí)Python: global關(guān)鍵字

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

[[226693]]

在讀這篇文章之前,確保你對 Python 全局、本地和非本地變量 有一定的基礎(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)我們在一個(gè)函數(shù)中創(chuàng)建一個(gè)變量時(shí),默認(rèn)情況下它是本地變量。
  • 當(dāng)我們在一個(gè)函數(shù)之外定義一個(gè)變量時(shí),默認(rèn)情況下它是全局變量。你不必使用 global 關(guān)鍵字。
  • 我們使用 global 關(guān)鍵字在一個(gè)函數(shù)中來讀寫全局變量。
  • 在一個(gè)函數(shù)外使用 global 關(guān)鍵字沒有效果。 

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

我們來舉個(gè)例子。 

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

  1. c = 1 # 全局變量
  2. def add():
  3. print(c)
  4.  
  5. add()

運(yùn)行程序,輸出為:

  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()

運(yùn)行程序,輸出顯示錯(cuò)誤:

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

這是因?yàn)樵诤瘮?shù)中,我們只能訪問全局變量但是不能修改它。

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

示例 3:使用 global 在函數(shù)中改變?nèi)肿兞?/h4>
  1. c = 0 # global variable
  2.  
  3. def add():
  4. global c
  5. c = c + 2 # c 增加 2
  6. print("Inside add():", c)
  7.  
  8. add()
  9. print("In main:", c)

運(yùn)行程序,輸出為:

  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)建一個(gè)單獨(dú)的模塊 config.py 來保存全局變量并在同一個(gè)程序中的 Python 模塊之間共享信息。

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

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

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

  1. a = 0
  2. b = "empty"

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

  1. import config
  2.  
  3. config.a = 10
  4. config.b = "alphabet"

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

  1. import config
  2. import update
  3.  
  4. print(config.a)
  5. print(config.b)

運(yùn)行 main.py,輸出為:

  1. 10
  2. alphabet

在上面,我們創(chuàng)建了三個(gè)文件: config.py, update.pymain.py

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

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

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

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

  1. def foo():
  2. x = 20
  3. def bar():
  4. global x
  5. x = 25
  6.  
  7. print("Before calling bar: ", x)
  8. print("Calling bar now")
  9. bar()
  10. print("After calling bar: ", x)
  11.  
  12. foo()
  13. print("x in main : ", x)

輸出為:

  1. Before calling bar: 20
  2. Calling bar now
  3. After calling bar: 20
  4. x in main : 25

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

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

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

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2009-12-03 19:06:44

PHP關(guān)鍵字globa

2013-01-30 10:12:14

Pythonyield

2022-05-06 08:32:40

Pythonwith代碼

2020-08-23 11:03:24

Python開發(fā)void

2009-08-21 14:58:56

C# this關(guān)鍵字

2009-09-17 09:30:00

Linq LET關(guān)鍵字

2022-01-04 16:35:42

C++Protected關(guān)鍵字

2012-03-01 12:50:03

Java

2009-09-02 09:24:03

C# this關(guān)鍵字

2019-12-20 15:19:41

Synchroinze線程安全

2009-12-17 13:57:15

Ruby關(guān)鍵字

2009-08-06 17:52:23

C#增加that關(guān)鍵字

2009-08-13 17:44:34

C# using關(guān)鍵字

2009-08-26 15:16:29

C# lock關(guān)鍵字

2024-03-15 15:12:27

關(guān)鍵字底層代碼

2011-06-14 13:26:27

volatile

2021-08-06 07:51:47

關(guān)鍵字int函數(shù)

2009-08-21 14:47:59

C# base關(guān)鍵字

2022-01-10 18:11:42

C語言應(yīng)用技巧

2022-11-12 18:32:50

Golangomitemptyjson
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲精品视频在线 | 亚洲狠狠爱| www国产亚洲精品久久网站 | 9999视频| 日本精品视频一区二区三区四区 | 日日碰狠狠躁久久躁婷婷 | 97高清国语自产拍 | 高清国产午夜精品久久久久久 | 81精品国产乱码久久久久久 | 九九热这里 | 久草资源在线视频 | 精品亚洲一区二区三区四区五区 | 一区二区三区精品视频 | 亚洲在线| 成人在线免费av | 国产精品综合久久 | 日韩免费网站 | 欧美一二三区 | 久久不射电影网 | 国产日韩视频在线 | 亚洲高清在线播放 | www.久久| 国产精品特级毛片一区二区三区 | 中文字幕国产精品 | 亚洲一区二区三区免费视频 | 伊人99 | 久久久久久亚洲欧洲 | 欧美三区视频 | 欧美日韩一区在线观看 | 亚洲精品一区二区三区蜜桃久 | 91在线资源 | 日韩中文字幕在线观看 | 午夜视频免费在线 | 午夜精品在线 | 国产电影一区二区在线观看 | 国产九九精品视频 | 91久久久久久 | 亚州精品天堂中文字幕 | 国产免费一区二区三区 | 欧美偷偷操 | 一a一片一级一片啪啪 |