一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python全局變量引用與修改過程解析

python全局變量引用與修改過程解析

2020-05-06 09:42yanfengt Python

這篇文章主要介紹了python全局變量引用與修改過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

這篇文章主要介紹了python全局變量引用修改過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一、引用

使用到的全局變量只是作為引用,不在函數中修改它的值的話,不需要加global關鍵字。如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#! /usr/bin/python
 
a = 1
b = [2, 3]
 
def func():
  if a == 1:
    print("a: %d" %a)
  for i in range(4):
    if i in b:
      print("%d in list b" %i)
    else:
      print("%d not in list b" %i)
if __name__ == '__main__':
  func()

輸出結果:

python全局變量引用與修改過程解析

可以看出,無論是列表還是變量,都是可以直接引用的。

二、修改

使用到的全局變量,需要在函數中修改的話,就涉及到歧義問題,如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#! /usr/bin/python
a = 1
b = [2, 3]
 
def func():
  a = 2
  print "in func a:", a
  b[0] = 1
  print "in func b:", b
 
if __name__ == '__main__':
  print "before func a:", a
  print "before func b:", b
  func()
  print "after func a:", a
  print "after func b:", b

輸出結果:

python全局變量引用與修改過程解析

可以看出,對于變量a,在函數func中"a = 2",因為存在既可以表示引用全局變量a,也可以表示創建一個新的局部變量的歧義,所以python默認指定創建一個新的局部變量來消除這一歧義,但對于列表b而言,"b[0] = 1"不存在這種歧義,因此直接修改了全局變量,但是如果改成了"b = [3, 4]",那么b也會變成局部變量。特別地,當在func中a = 2之前加入"if a == 1:"這一語句,腳本運行出錯,因為這一語句引入了全局變量,導致了"a = 1"這一語句無法創建同名的局部變量。

因此,需要修改全局變量a,可以在"a = 2"之前加入global a聲明,如:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#! /usr/bin/python
 
a = 1
b = [2, 3]
 
def func():
  global a
  a = 2
  print "in func a:", a
  b[0] = 1
  print "in func b:", b
 
if __name__ == '__main__':
  print "before func a:", a
  print "before func b:", b
  func()
  print "after func a:", a
  print "after func b:", b

輸出結果:

python全局變量引用與修改過程解析

結論:引用全局變量,不需要golbal聲明,修改全局變量,需要使用global聲明,特別地,列表、字典等如果只是修改其中元素的值,可以直接使用全局變量,不需要global聲明。結論:引用全局變量,不需要golbal聲明,修改全局變量,需要使用global聲明,特別地,列表、字典等如果只是修改其中元素的值,可以直接使用全局變量,不需要global聲明。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/yanfengt/p/6305542.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: yellow片在线观看 | 欧美大片一区二区 | 91啪在线观看国产在线 | 成人免费草草视频 | 无限国产资源 | 奇米影视99 | 国产精品全国探花在线观看 | 第一次不是你高清在线观看 | 欧美办公室silkstocking | 国内精品麻豆 | 3d肉浦团在线观看 | 韩国三级2020| 美女被的在线网站91 | 超兴奋朋友的中文字幕下 | 国产精彩视频 | 日韩乱淫| 久久se精品一区二区国产 | 91九色jiuse006 | 精品一区二区三区 不卡高清 | 免费高清视频日本 | 国产区成人精品视频 | 动漫美女被吸乳羞羞小说 | 青青草原影院 | 午夜片神马影院福利 | 97操| 亚洲成人网导航 | 91视频一区 | 女人c交zzzooo在线观看 | 日本深夜视频 | 99久久99久久久精品齐齐鬼色 | 国产福利专区精品视频 | 国产剧情麻豆刘玥视频 | 国产高清在线看 | 王者荣耀瑶白色液体 | 啾咪成人漫画免费 | 国产精品成人亚洲 | 青青草99热久久 | 国产中文在线视频 | 91嫩草国产在线观看免费 | 亚洲成人99 | 精品无人区一区二区三区 |