我正在使用python並執行以下操作。Python的函數範圍
x = [1,2,3,4,5]
def function1():
print(x)
function1()
我想我會得到錯誤name 'x' is not defined
,但我不這樣做,它打印即使它沒有在函數中定義的變量x。爲什麼python讓我使用在一個函數內部定義的變量,即使它們有不同的作用域?
我正在使用python並執行以下操作。Python的函數範圍
x = [1,2,3,4,5]
def function1():
print(x)
function1()
我想我會得到錯誤name 'x' is not defined
,但我不這樣做,它打印即使它沒有在函數中定義的變量x。爲什麼python讓我使用在一個函數內部定義的變量,即使它們有不同的作用域?
基本上你將x設置爲一個全局變量。
x = "myString"
function global():
print(x) // Global
function notglobal():
y = "myOtherString"
print(y) // Not Global
class myClass:
z = "notGlobal" // Not Global
function printZ():
print(z) // Global To class
print(z) // Not global so will error out
x
是全局的,這意味着所有的函數都可以使用它。
我喜歡this blog post所提供的治療,它將所描述的行爲與Javascript的變量提升進行了比較(儘管博客使用負面示例來演示它)。
因爲Python使用嵌套的作用域。 – 2014-10-03 21:44:58
在這裏閱讀我的答案> http://stackoverflow.com/questions/26067976/basic-python-function-and-outputs/26068060#26068060 – Kasramvd 2014-10-03 21:50:47