2015-04-17 443 views
4

當我在Pycharm中調試我的Python代碼時,我經常想更改一些由原始代碼設置的變量。
我可以通過「調試器」選項卡執行此操作,單擊相應的變量並使用「設置值」功能對其進行更改。這感覺太多了點擊,我寧願通過控制檯界面。但是,當我嘗試這一點,它不更新變量:在Pycharm調試器中更改變量

>>> filename 
Out[6]: 'a' 
>>> filename='b' 
>>> filename 
Out[8]: 'a' 

有沒有辦法通過控制檯界面來更改這些類型的變量?

+0

試圖通過範圍,例如, locals()[「filename」] =「b」'或'globals()[「filename」] =「b」'(取決於它是什麼類型的變量)或'setattribute(yourmodue,「filename」 「b」)'。 –

+0

@qarma文件名變量確實存在於'locals()'中,但'locals()[「filename」] =「b」'沒有任何作用。 –

+0

'locals()。update(filename =「b」)''? –

回答

3

不幸的是,您無法通過可以在調試會話中彈出的控制檯執行此操作。您只能通過調試選項卡更改內容,右鍵單擊並更改它。不幸的是,但事實如此。

5

Use the magic button

你完全可以做到這一點。當在斷點處停止:

  1. 在調試器控制檯選項卡,點擊一個顯示Python提示符
  2. 鍵入您的Python代碼在系統提示修改變量節目高達
  3. 看到在控制檯窗格中的結果在ç

注:interactiv如果你關閉按鈕和程序結束時,e控制檯回顯命令(圖像中帶C的行)會消失,這有點奇怪。我經常想複製我輸入的命令。

+0

這對我有用。謝謝。 –

+0

@ Jan-Willem如何將此答案標記爲正確? – Mike

2

看起來像一個錯誤,上面的答案顯示可以操縱已經存在的對象的狀態,但是似乎不可能將新的值(或對象)賦給變量本身。

見澄清如下片段:

>>> var_obj.temp = 1 
>>> var_obj 
Out[2]: namespace(temp=1) 
>>> var_obj.temp2 = 2 
>>> var_obj.temp = 10 
>>> var_obj 
Out[5]: namespace(temp=10, temp2=2) 
>>> var_simple = 10 
>>> var_simple 
Out[7]: 1 

的問題已經上報PyCharm問題跟蹤早在2013(see the link)。 人們報告說,自從PyCharm 3出現這個問題後,有人提出它可能是一個python問題,而不是PyCharm,但它不清楚爲什麼。

無論如何,行爲是令人困惑的,至少應該在嘗試調試時考慮到 - 直到它被修復。