2014-03-19 96 views
0

我期待了解一些基本的python函數的全部內容。如何在「DEL」產生這種(在bash):在變量內刪除變量

>>> temp = 1 
>>> python = 1 + temp 
>>> 
>>> 
>>> temp 
1 
>>> 
>>> python 
2 
>>> 
>>> 
>>> del temp 
>>> 
>>> 
>>> python 
2 
>>> 
>>> temp 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'temp' is not defined 
>>> 
>>> 
>>> 
+1

你問的是如何刪除變量,還是有一些其他的行爲,這是意想不到的? –

+0

'python'已被賦值爲'2'。爲了產生結果,它不會產生'temp'參數。這裏有什麼意外? – devnull

+0

請參閱下面的Elias Benevedes的答案。我不明白變量是在一個時間點上定義的,而不是連續重新定義的。 –

回答

0

創建變量的方式是參考一個時間到另一個變量。在你的例子中,python = temp + 1,python在定義的時候等於temp加上1 。每次處理器經過循環時,變量python都不會重新計算。它的值只定義一次。如果其定義中包含的變量發生更改,則不會更改。

+0

謝謝,Elias--你完全解釋了我在這個例子中對定義變量的誤解。 –

0

蟒可變

temp內刪除變量不是內部python。在線路

python = 1 + temp 

值的temp將被用於創建變量python。所以如果你刪除temp,它不會影響python

+0

謝謝 - 你已經理解並解釋得很好。 –

0

Here是什麼蟒蛇DEL命令手冊上說:

名稱的缺失去那名從本地或 全局命名空間的結合,這取決於名字是否在全球發生 語句在同一個代碼塊中。如果名稱未綁定,則會引發NameError 異常。

1

對於德爾蟒蛇,它意味着

Deletion of a name removes the binding of that name from the local or global namespace 

所以,當你刪除變種,它會刪除這個變量,當你再次調用它,它是不可用,這就是爲什麼發生異常。

+0

謝謝 - 我在問,爲什麼var'python'在沒有NameError的情況下運行,刪除了'temp'後,似乎包含在var'python'中。 –