@toc
變數起作用的範圍稱為變數的作用域,不同作用域內同名變數之間互不影響。變數分為:全域性變數、區域性變數。
全域性變數:
1.在函式和類定義之外宣告的變數。作用域為定義的模組,從定義位置開始直到模組結束。
2.全域性變數降低了函式的通用性和可讀性。應盡量避免全域性變數的使用。
3.全域性變數一般做常量使用。
4.函式內要改變全域性變數的值,使用global宣告一下
區域性變數:
1.在函式體中(包含形式引數)宣告的變數。
2.區域性變數的引用比全域性變數快,優先考慮使用。
3.如果區域性變數和全域性變數同名,則在函式內隱藏全域性變數,只使用同名的區域性變數
#全域性變數的作用域測試
a=100
#全域性變數
deff1()
:global a
#如果要在函式內改變全域性變數的值,增加global關鍵字宣告
print
(a)#列印全域性變數a的值
a=300
f1()
print
(a)
執行結果
#全域性變數和區域性變數同名測試
deff1()
: a=
3#同名的區域性變數
print
(a)f1(
)print
(a)#a仍然是100,沒有變化
執行結果
3
100
#輸出區域性變數和全域性變數
a=100
deff1
(a,b,c)
:print
(a,b,c)
print
(locals()
)#列印輸出的區域性變數
print
("#"*20
)print
(globals()
)#列印輸出的全域性變數
f1(2,3
,4)
執行結果
234
####################
,'__builtins__'
:(built-in)
>
,'__file__'
:'e:/kyh/python/1 python 基礎/原始碼/python400集第一季源**/mypro_func/mypy_05.py'
,'__cached__'
:none
,'a'
:100
,'test01'
:>
,'f1'
:>
}
區域性變數的查詢和訪問速度比全域性變數快,優先考慮使用,尤其是在迴圈的時候。
在特別強調效率的地方或者迴圈次數較多的地方,可以通過將全域性變數轉為區域性變數提高執行速度。
#測試區域性變數和全域性變數效率
deftest01()
: start = time.time(
)for i in
range
(10000000):
math.sqrt(30)
end = time.time(
)print
("耗時"
.format
((end-start)))
deftest02()
: b = math.sqrt
start = time.time(
)for i in
range
(10000000):
b(30)
end = time.time(
)print
("耗時"
.format
((end-start)))
test01(
)test02(
)
執行結果
耗時1.5818862915039062
耗時1.2624022960662842
python中全域性變數和區域性變數
1 python中定義在函式內部的變數稱為區域性變數,區域性變數只能在區域性函式內部生效,它不能在函式外部被引用。def discount price,rate price discounted price rate return price discounted sale price float ...
python中的全域性變數和區域性變數
全域性變數與區域性變數兩者的本質區別就是在於作用域 用通俗的話來理解的話,全域性變數是在整個py檔案中宣告,全域性範圍內都可以訪問。區域性變數是在某個函式中宣告的,只能在該函式中呼叫它,如果試圖在超出範圍的地方呼叫,程式就爆掉了 如果在函式內部定義與某個全域性變數一樣名稱的區域性變數,就可能會導致意...
python中的全域性變數和區域性變數
usr bin env python coding utf 8 time 2021 3 14 16 56 author banzhu file variable.py 作用域 scope 就是變數的有效範圍,就是變數可以在哪個範圍以內使用 區域性變數 local variable 定義在函式內部的變...