python中的全域性變數和區域性變數的使用

2021-10-08 19:49:46 字數 2142 閱讀 9281

@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 定義在函式內部的變...