2015-04-17 436 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,但它不清楚为什么。

无论如何,行为是令人困惑的,至少应该在尝试调试时考虑到 - 直到它被修复。