亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python global關(guān)鍵字的用法詳解

系統(tǒng) 1767 0

最近剛好有朋友遇到個(gè)global相關(guān)的問(wèn)題,這里簡(jiǎn)單學(xué)習(xí)一下global關(guān)鍵字的用法。

想要更好的了解global關(guān)鍵字,首先要熟悉python的全局變量與局部變量的概念。global關(guān)鍵字的作用是可以申明一個(gè)局部變量為全局變量,下面看一下實(shí)例

一、變量作用域的說(shuō)明

這里簡(jiǎn)單提一下變量作用域的概念,有興趣的小伙伴,可以查一下相關(guān)的博客

1、局部變量

            
def a():
  ## 菊部變量 - ,-
  local = 1
  print(local)
## 全局無(wú)法使用,只有自己可用
print(lobal)
          

2、全局變量

            
global_str = '123'
def a():
  ## 全菊變量 - ,-
  print(global_str)
## 全菊變量大家都可以用
print(global_str)
          

3、內(nèi)置作用域

系統(tǒng)內(nèi)固定模塊里定義的變量,如預(yù)定義在builtin 模塊內(nèi)的變量。這里不介紹了。

4、嵌套作用域

用的也比較少,主要是用在閉包中,看栗子

            
def out():
  ## 函數(shù)內(nèi)變量,但對(duì)于下級(jí)函數(shù)就是全局變量,對(duì)于外部來(lái)說(shuō)就是局部變量
  en = 1
  def inside():
    print(en)
    return en
  return inside()
out()
          

二、global關(guān)鍵字作用

1、在函數(shù)間global關(guān)鍵字的作用

            
def out():
  ## global關(guān)鍵字作用
  global en
  en = 1
  ## 調(diào)用other可以打印en,去掉global會(huì)報(bào)錯(cuò)。
  other()
  print(out.__globals__)
def other():
  print(en)
out()
          

2、在類中也是一樣,不多說(shuō),怕越多越亂,類中可以用self。

3、其他文件導(dǎo)入,如果定義好了之后從其他文件導(dǎo)入了呢?會(huì)發(fā)生什么,看一下栗子,a文件仍為上面栗子中代碼

            
from report.a import *
out()
print(out.__globals__['en'])
          

結(jié)果:

            
1
1
          

還好還好,沒(méi)有報(bào)錯(cuò)。

4、那么問(wèn)題來(lái)了,如果要在另一個(gè)文件中繼續(xù)定義函數(shù),是不是也可以繼續(xù)使用a文件中的global申明的全局變量呢?

            
from report.a import out
def b():
  print(out.__globals__['en'])
  ## 直接飆紅了。 -,-
  print(en)
b()
          

果然報(bào)錯(cuò)了:

            
Traceback (most recent call last):
 File "/Users/dangfuli/Documents/PycharmProjects/asp/report/b.py", line 9, in 
            
              
  b()
 File "/Users/dangfuli/Documents/PycharmProjects/asp/report/b.py", line 6, in b
  print(out.__globals__['en'])
KeyError: 'en'
            
          

也就是說(shuō),導(dǎo)入包的話,global定義的全局變量沒(méi)有被加到globals里面。

5、上面好多地方都用到了,func.__globals__,這個(gè)運(yùn)行一下,看個(gè)實(shí)例

            
def out():
  ## global關(guān)鍵字作用
  global en
  en = 1
  other()
  print(out.__globals__)
  ## 調(diào)用other可以打印en

def other():
  print(en)

out()

## 返回結(jié)果
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x10306a7b8>, '__spec__': None, '__annotations__': {}, '__builtins__': 
            
              , '__file__': '/Users/xxx/Documents/PycharmProjects/xxx/report/a.py', '__cached__': None, 'out': 
              
                , 'other': 
                
                  , 'en': 1}
                
              
            
          

可以看到,當(dāng)前的函數(shù)用global之后,en變量就被加到了globals里面

下面看看導(dǎo)入到其他地方去的

            
# a.py
def out():
  ## global關(guān)鍵字作用
  global en
  en = 1
  other()
  print(out.__globals__['en'])
  ## 調(diào)用other可以打印en

def other():
  print(en)
#############上面是a文件,下面是b文件#############

# b.py
from report.a import out

def b():
  ## globals里面沒(méi)有en那個(gè)全局變量
  out()
  print(b.__globals__['en'])

b()
          

看一下結(jié)果:

            
1
Traceback (most recent call last):
 File "/Users/xxx/Documents/PycharmProjects/xxx/report/b.py", line 8, in 
            
              
  b()
 File "/Users/xxx/Documents/PycharmProjects/xxx/report/b.py", line 6, in b
  print(b.__globals__['en'])
KeyError: 'en'
            
          

可以看到,導(dǎo)入的a文件正常運(yùn)行,b文件打印en的時(shí)候就報(bào)錯(cuò)了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 四虎网站最新地址 | 有码在线 | 国产在线观看自拍 | 久久午夜宅男免费网站 | 亚州毛色毛片免费观看 | 日日噜噜夜夜狠狠久久丁香 | 国产高清天干天天视频 | 国产精品嫩草研究所永久网址 | 久久这里只有精品1 | 国产成人久久 | 午夜影院免费在线观看 | 香蕉视频黄在线观看 | 女性一级全黄生活片在线播放 | 午夜在线播放免费高清观看 | 在线亚洲精品国产波多野结衣 | 99热久久这里只有精品首页 | 亚洲综合色网站 | 99国产精品久久久久久久日本 | 91在线公开视频 | 欧美理论片在线观看 | 一区二区三区在线播放 | 性欧美成人依依影院 | 日本波多野结衣字幕久久 | 成人在线欧美 | 人人鲁免费播放视频人人香蕉 | 孕妇孕妇aaaaa级毛片视频 | 色之综综 | 夜色视频一区二区三区 | 色天使久久综合网天天 | 第一序列番外篇在哪里看 | 伊人久久婷婷丁香六月综合基地 | 四虎精品视频在线永久免费观看 | 国产不卡免费 | 99热在线这里只有精品 | 成人小视频免费在线观看 | 国内精品区一区二区三 | 天天摸天天操免费播放小视频 | 欧洲一级做a爱在线观看 | 欧美13一14周岁a在线播放 | 49xxx中国妇女内谢视频 | 色偷偷亚洲第一成人综合网址 |