Python中的全域性變數和區域性變數
區域性變數與全域性變數名一樣時
當區域性變數和全域性變數名字一樣時,依然是不同的變數,但是值一樣時,地址依然一樣,類似於兩個不同的指標指向同一個地址。值不一樣時,地址不一樣,修改區域性變數,全域性變數的值依然不變,例如:
num = 100
def test():
num = 99
print("區域性變數num的值:%d,地址為:%d" % (num, id(num)))
test()
print("全域性變數num的值:%d,地址為:%d" % (num, id(num)))
輸出:
區域性變數num的值:99,地址為:492861520
全域性變數num的值:100,地址為:492861552
Python中,當全域性變數和區域性變數的名字一樣時,函式內會優先使用區域性變數的值,函式內也沒辦法通過賦值直接修改全域性變數的值。
如果要在區域性修改全域性變數的值時
修改成如下程式碼:
num = 100
def test():
global num #告訴直譯器num是全域性變數
num = 99
print("區域性變數num的值:%d,地址為:%d" % (num, id(num)))
test()
print("全域性變數num的值:%d,地址為:%d" % (num, id(num)))
輸出:
區域性變數num的值:99,地址為:492861520
全域性變數num的值:99,地址為:492861520
針對函式引數使用賦值語句,會在函式內部修改區域性變數的引用,不會影響到外部變數的引用
def demo(num, num_list):
print("函式內部")
# 賦值語句
num = 200
num_list = [1, 2, 3]
print(num)
print(num_list)
gl_num = 99
gl_list = [4, 5, 6]
demo(gl_num, gl_list)
print("函式外部")
print(gl_num)
print(gl_list)
輸出:
函式內部
200
[1, 2, 3]
函式外部
99
[4, 5, 6]
如果傳遞引數是可變型別,在函式內部,使用方法修改了資料的內容,同樣會影響到外部的資料
def demo(num_list):
print("函式內部")
# 使用方法修改內部的程式碼
num_list.append(9)
print(num_list)
gl_list = [1, 2, 3]
demo(gl_list)
print("函式外部")
print(gl_list)
輸出:
函式內部
[1, 2, 3, 9]
函式外部
[1, 2, 3, 9]
相關文章
- 區域性變數和全域性變數變數
- javascript中的作用域(全域性變數和區域性變數)JavaScript變數
- java 全域性變數和區域性變數Java變數
- jmeter全域性變數和區域性變數JMeter變數
- 全域性變數與區域性變數變數
- js-js的全域性變數和區域性變數JS變數
- Java區域性變數與全域性變數Java變數
- 【c】全域性變數與區域性變數變數
- JavaScript五:全域性變數&區域性變數;運算子JavaScript變數
- 成員變數、全域性變數、例項變數、類變數、靜態變數和區域性變數的區別變數
- 區域性變數和全域性變數(靜態和非靜態)區別變數
- Python中類變數、成員變數、區域性變數的區別Python變數
- 成員變數和區域性變數變數
- 多執行緒中,區域性變數與全域性變數哪個比較安全?執行緒變數
- 十二、變數作用域:區域性變數、全域性變數,函式版名片管理系統—新增函式文件變數函式
- 函式之定義及全域性變數&區域性變數&風溼理論函式變數
- 全域性變數變數
- golang變數作用域問題-避免使用全域性變數Golang變數
- vue定義全域性變數和全域性方法Vue變數
- 全域性 DOM 變數變數
- test函式中的區域性變數函式變數
- Python定義全域性變數的用法Python變數
- JavaScript全域性作用域下,變數加var和不加var的區別。JavaScript變數
- Python閉包區域性變數問題Python變數
- 類,物件,成員變數和區域性變數,匿名物件物件變數
- 變數的分類(臨時(本地)變數、環境變數、全域性變數和系統變數)變數
- 全域性DOM變數的坑變數
- js宣告全域性變數JS變數
- 修改全域性變數時,可變型別和不可變型別的區別變數型別
- 【Java貓說】例項變數與區域性變數Java變數
- javascript全域性變數的使用注意JavaScript變數
- 彙編眼中的函式呼叫引數傳遞以及全域性與區域性變數與“基址”函式變數
- python多執行緒-共享全域性變數Python執行緒變數
- PHP 超級全域性變數PHP變數
- less 全域性變數使用 引用變數
- 【SQL Server】常用全域性變數SQLServer變數
- Java中變數之區域性變數、本類成員變數、父類成員變數的訪問方法Java變數
- 介面測試實戰--postman全域性變數和環境變數Postman變數