8
A
回答
2
在內部創建的變量根據定義,方法(例如,main)是本地的。但是,您可以在方法之外創建一個全局變量,並從任何其他方法的角度訪問和更改其值。
要更改其值,請使用global
關鍵字。
9
你想要什麼是不可能的*。你可以在全局命名空間中創建一個變量:
myglobal = "UGHWTF"
def main():
global myglobal # prevents creation of a local variable called myglobal
myglobal = "yu0 = fail it"
anotherfunc()
def anotherfunc():
print myglobal
不要這樣做。
函數的全部要點是它需要參數。只需將參數添加到您的功能。如果你發現你需要修改很多功能,這表明你應該將它們收集到一個班級中。
*
爲了詳細說明爲什麼這是不可能的:python中的變量沒有聲明 - 它們是在執行賦值語句時創建的。這意味着下面的代碼(從張貼astronautlevel代碼派生)將打破:
def setcake(taste):
global cake
cake = taste
def caketaste():
print cake #Output is whatever taste was
caketaste()
Traceback (most recent call last):
File "prog.py", line 7, in <module>
caketaste()
File "prog.py", line 5, in caketaste
print cake #Output is whatever taste was
NameError: global name 'cake' is not defined
這是因爲當caketaste
被調用時,沒有分配給cake
發生。它只會在調用setcake
後纔會發生。
您可以在這裏看到的錯誤:http://ideone.com/HBRN4y
1
您需要使用global
語句。這些相對簡單。爲此,只需在定義變量本身之前將變量定義爲全局變量。 例如:
def setcake(taste):
global cake
cake = taste
def caketaste():
print cake
setcake('tasty')
caketaste() #Output is tasty
編輯: 對不起,看來我誤解你的問題。請允許我現在嘗試正確回答它。
def printcake():
print cake #This function prints the taste of cake when called
def setcake(taste, printq):
global cake #This makes sure that cake can be called in any function
cake = taste #sets cake's taste
if printq: #determines whether to print the taste
printcake()
setcake('good', True) #Calls the function to set cake. Tells it to print result. The output is good
的輸出,如在代碼:http://ideone.com/dkAlEp
+1
如果你在setcake之前調用'caketaste',會發生什麼? – Marcin 2014-02-17 16:42:27
相關問題
- 1. PHP類函數內部全局變量
- 2. Python函數全局變量?
- 3. PHP - 內部全局變量 - 要在內部函數中訪問
- 4. 探測全局變量以調用函數內部函數
- 5. Javascript:函數內的全局變量
- 6. 從函數傳遞局部變量變爲全局變量
- 7. Python的全局和局部變量
- 8. 爲什麼Python允許您將函數內部的局部變量實例化爲全局變量?
- 9. 訪問全局函數的變量在局部函數
- 10. 全局變量的函數
- 11. 函數內使用全局變量?
- 12. Python全局與局部變量?
- 13. 如何從Python中的內部函數更改外部函數局部變量?
- 14. Python中函數內部的全局列表變異
- 15. 在全局變量內部定義全局變量PHP
- 16. 全局文件變量不可訪問的外部函數(Python)
- 17. 全局變量不是全局的 - 僅在函數內
- 18. 的Python:與局部/全局變量引用/分配內循環
- 19. Python + =與.extend()在一個全局變量上的函數內
- 20. 設置一個函數內的全局python變量
- 21. 如何更新全局變量的函數內部和angularjs
- 22. 在函數內部訪問被重寫的全局變量
- 23. 從模塊內部的函數更新全局變量
- 24. 從函數內部不能訪問全局變量? (JavaScript)的
- 25. 如何修改函數內部的全局變量?
- 26. 函數內部的JavaScript全局變量定義
- 27. 類和函數內部的全局變量PHP
- 28. 更改函數內部的全局變量值
- 29. 函數內部的全局變量值爲NULL
- 30. 修改一個函數內部的全局JavaScript變量
你就不能傳遞變量作爲自變量? – 2013-05-11 22:41:44
是的,我可以,但我只是想看看是否有可能在主函數內部定義全局變量,也許這是一個壞主意...... – Dnaiel 2013-05-11 22:42:18
全局變量只有當你有reallllllyyyy長代碼時纔會變得討厭。但對於較小的代碼,它們很好。 – astronautlevel 2013-05-11 23:11:55