我只是想知道,在Python 3,爲什麼有的全局變量必須被定義爲global
您使用(即我們定義的)每燎功能,但其他人只需要定義一次?可能是一個問題,因爲我沒有正確地理解範圍,請問有人可以解釋一下嗎?定義全局變量
Q
定義全局變量
0
A
回答
3
範圍內的變量可以是讀取,但不能在該範圍內聲明的函數/對象修改。如果你也想改變它們的價值,你必須宣佈它們是全球性的。
UPDATE:但是,請注意,「改變價值」可能會或可能並不意味着什麼,你最終會用於如果來自其他編程語言正在添加,如分配在Python意味着給一個對象的名稱。關鍵字global
允許你讓定名指向(被關聯到)不同的對象。請看下面的例子:
aa = 1
bb = 2
cc = [ 1, 2, 3 ]
def test():
global aa
aa = -1
bb = -1
cc[2] = -1
test()
print "aa:", aa
print "bb:", bb
print "cc:", cc
會導致:
aa: -1
bb: 2
cc: [1, 2, -1]
在名稱
aa
聲明爲global
功能test()
,在功能,所以aa = -1
將導致點全球名稱aa
爲一個新對象,即整數-1
。名稱
bb
在test()
未聲明爲全球性的,因此分配bb = -1
將函數內本地創建的名稱bb
,並將其指向-1
,而在全球範圍仍然指向留下名字bb
值爲2
。可變
cc
也沒有宣佈爲全球性的,因此,你不能改變的功能test()
的全球cc
的關聯。然而,由於在全球範圍內cc
與可變對象關聯,你可以改變這個對象的功能中的內容。
注意,這裏的配方是也許不是解釋的差異官方Python的方式,但它可能有助於瞭解的東西,如果你有其他編程語言的一些背景。
相關問題
- 1. AngularJs定義全局變量
- 2. 全局變量未定義
- 3. CakePHP 3:定義全局變量變量
- 4. mysql自定義全局定義變量
- 5. 定義全局變量在C局部變量
- 6. CodeIgniter中未定義的全局變量
- 7. PHP自定義全局變量
- 8. Julia中沒有定義全局變量
- 9. 出錯信息 - 定義全局變量
- 10. Typescript:定義文件和全局變量
- 11. Bottle:未定義全局變量'請求'
- 12. setInterval的全局變量沒有定義
- 13. 在GoogleScript中定義全局變量
- 14. 全局變量「的getInfo」未定義
- 15. 如何定義全局變量?
- 16. 未找到全局定義的變量
- 17. Kotlin - 爲WebView定義全局變量
- 18. 全局變量沒有{%集%}定義
- 19. 速度:如何定義全局變量
- 20. JavaScript的全局變量未定義
- 21. 定義全局變量在Perl與`strict`
- 22. 全局變量未定義錯誤
- 23. Javascript - 如何全局定義變量?
- 24. 在主機軟件的dll和全局變量中定義的全局變量
- 25. 當使用全局變量時未定義全局名稱
- 26. 初始化全局常量變量是否安全?定義?
- 27. PHP:使用全局變量時會重新定義變量嗎?
- 28. PHP中的全局常量:使用全局變量還是定義變量更安全?爲什麼?
- 29. 全局變量
- 30. 全局變量
注意,這個正確的解釋,完全依賴於「改變一個變量的值」的正確解釋。歷史表明,初學者經常會弄錯那部分。 – delnan 2013-02-25 19:34:23
我同意,因此,我發現你在上面鏈接的線程是澄清細節(關於可變的不可變類型)的一個非常好的起點。 – 2013-02-25 19:37:12
你提到可變和不可變類型,就好像有區別一樣,聽起來就像你不明白它。 – delnan 2013-02-25 19:40:30