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


问题内容

我正在从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

问题答案:

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

请参阅“ 调试器命令” 部分

a(rgs)
打印当前函数的参数列表。

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

(强调我的)。

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

我个人觉得该(a)rgs命令毫无意义。它使用str()而不是repr();打印所有值。这使得具有相似__str__输出值的对象之间的区别不可见(例如strvs.unicode或BeautifulSoup
Element与带有HTML的字符串等)。