2014-10-03 55 views
0

我正在使用python並執行以下操作。Python的函數範圍

x = [1,2,3,4,5] 

def function1(): 
    print(x) 

function1() 

我想我會得到錯誤name 'x' is not defined,但我不這樣做,它打印即使它沒有在函數中定義的變量x。爲什麼python讓我使用在一個函數內部定義的變量,即使它們有不同的作用域?

+1

因爲Python使用嵌套的作用域。 – 2014-10-03 21:44:58

+0

在這裏閱讀我的答案> http://stackoverflow.com/questions/26067976/basic-python-function-and-outputs/26068060#26068060 – Kasramvd 2014-10-03 21:50:47

回答

0

基本上你將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 
+0

如何選擇一個變量是全球性的? – Ben 2014-10-03 21:48:31

+0

如果它的外部類/功能全球 – Bioto 2014-10-03 21:48:53

+0

你可以編輯你的答案解釋更好一點? – Ben 2014-10-03 21:49:32

0

x是全局的,這意味着所有的函數都可以使用它。

0

我喜歡this blog post所提供的治療,它將所描述的行爲與Javascript的變量提升進行了比較(儘管博客使用負面示例來演示它)。