簡體   English   中英

在機蓋環境中清除變量

[英]Clear variables in Canopy environment

我可以在Python文件中使用命令來清除所有變量嗎?

我已經搜索了一段時間,但我只能找到使用%reset 但是,這似乎僅在IPython中有效,但在我嘗試運行python文件時無效。

僅供參考,我正在使用免費版本的有思想的頂篷。

[從評論中添加:]我運行了多個python文件,這些文件可能具有共享變量。 我希望能夠在運行任何文件之前清除所有變量,以確保我已正確定義變量並且它們采用正確的值。

tl; dr-您所描述的不是問題。

但是值得理解,以避免其他混淆點:

1)在運行IPython(包括Canopy的Python窗格,這是標准的IPython QtConsole)時,IPython擁有自己的全局命名空間(變量,模塊和函數等的列表),該全局命名空間不同於在其中運行的腳本的命名空間。 這可能會造成混淆,但這實際上是一個功能。

2)正常運行每個腳本時,它以一個空的命名空間開頭,就像在純Python中運行一樣。 這就是為什么您的擔憂不是問題。 但這也會使初學者感到困惑,因為您的腳本也不知道已在IPython中導入的模塊。 有關更多信息,請參見本文

3)腳本完成后,將其全局名稱空間復制到IPython全局名稱空間(覆蓋已存在的所有同名變量)。

4)因此,正常的可見性是一種方式-IPython可以看到您運行的腳本的結果,因此您可以在提示符下更多地使用它們,但是您的腳本看不到您先前運行的腳本的結果(不是甚至相同的腳本),或在提示符下執行的任何操作。

5)但是,與使用純Python運行腳本時相比,存在一個巨大的差異。 即,IPython本身不會在運行之間重新初始化(除非您重置內核),尤其是,已導入的任何模塊仍將被初始化,並且在以后的導入中不會被重新加載或重新初始化。腳本。 有關更多信息,請參見本文

6)旁注:可以給%run命令一個-i選項以使命名空間可見性為2種方式,因此您的腳本將在IPython命名空間中啟動(正如我想的那樣),但這是不尋常的,而不是默認情況下,因為通常人們希望確保(就像您一樣)腳本正在“干凈”地運行。 使用此選項的主要原因是使腳本彼此構建,但是有更健壯,可移植的方法來實現此目的(即,將IPython命名空間中的變量名作為參數傳遞給您在腳本中定義的函數) 。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM