同一变量“ 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__
输出值的对象之间的区别不可见(例如str
vs.unicode
或BeautifulSoup
Element与带有HTML的字符串等)。