#!/usr/bin/python3
def func():
a = 1
print(a+12)
print(a)
結果:參考函數的變量函數外
NameError: name 'a' is not defined
是否有可能使用功能外?
#!/usr/bin/python3
def func():
a = 1
print(a+12)
print(a)
結果:參考函數的變量函數外
NameError: name 'a' is not defined
是否有可能使用功能外?
在蟒蛇的範圍是一個函數,或者類體,或模塊;只要您有賦值語句foo = bar
,它就會在賦值語句所在的範圍內(默認情況下)創建一個新變量(名稱)。
了在外部範圍設置一個變量是內範圍內可讀:
a = 5
def do_print():
print(a)
do_print()
了在內部範圍設定的變量不能在外部範圍中看到。請注意,您的代碼甚至沒有設置該變量,因爲該行永遠不會運行。
def func():
a = 1 # this line is not ever run, unless the function is called
print(a + 12)
print(a)
要像你想要的,一個函數內的變量集合,你可以試試這個:
a = 0
print(a)
def func():
global a # when we use a, we mean the variable
# defined 4 lines above
a = 1
print(a + 12)
func() # call the function
print(a)
我不認爲你可以這樣做,因爲變量'a'的範圍在函數func()內是有限的。如果你在外面定義它,你可以在函數外面調用'a'變量。如果你是python的初學者(像我一樣)使用this。它幫助我
PS:我可能是錯的,因爲我在python是一個初學者,以及
這本書是太老了 - 他正在使用python 3 –
@AnttiHaapala - 對不起,我改變了它。謝謝 – user9517536248
您可以通過使用return
語句一起傳遞一個值較高的範圍。
def func():
a = 1
print(a+12)
return a
a = func()
print(a)
結果:
13
1
注意,值未綁定到該變量的函數中有名稱。你可以將它分配給任何你想要的,或者直接在另一個表達式中使用它。
def func():
a = 1
print(a+12)
return a
func()
print(a) #this will not work. `a` is not bound to anything in this scope.
x = func()
print(x) #this will work
print(func()) #this also works
我想你可能需要閱讀更多有關「範圍」在Python中。 a在func()的範圍內聲明,因此在該範圍之外無法看到。 –
我可以用內置函數或類似的方法做到這一點 是否可能 –
如果你想訪問** func()**範圍之外的** a **,它只需要在範圍之外聲明** FUNC()**。如果這沒有意義,那麼我認真推薦閱讀一些python教程。幾乎任何教程都會告訴你你想了解範圍。 –