相同变量“args”的两个不同值

时间:2015-03-30 09:17:17

标签: python python-2.7 pdb

我从python脚本调用一个方法,其中一个变量为args。 一旦我进入方法,当我试图看到变量args的值时," print args"并且只是执行' args'显示两个不同的值。 谁能告诉我这两个命令之间的区别。

我希望这两个命令显示相同的值。

(Pdb) print args
<lib.framework.testmanager.RunArgs object at 0xb26acac>

(Pdb) args
args = <lib.framework.testmanager.RunArgs object at 0xb26acac>
u = <upgradelib.UpgradeManager object at 0x946cf8c>
spec = {'excludeHosts': None, 'evacuateAllData': True, 'WaitTime': None, 'IssueType': 'Host Disconnect', 'performObjectUpgrade': True, 'downgradeFormat': False}
result = True

1 个答案:

答案 0 :(得分:14)

args是PDB调试器命令。使用!args显示实际变量。

请参阅Debugger Commands section

  

一(RGS)
  打印当前函数的参数列表。

  

[!]声明
  在当前堆栈帧的上下文中执行(一行)语句。 除非语句的第一个单词类似于调试器命令,否则可以省略感叹号。

(强调我的)。

args输出中,您可以在第一行看到args参数值。

就个人而言,我发现(a)rgs命令有点无意义;它使用str()而不是repr()打印所有值;这使得具有相似__str__输出值的对象之间的差异不可见(例如strunicode,或BeautifulSoup元素与带有HTML的字符串等。)