代码之家  ›  专栏  ›  技术社区  ›  Richard

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

  •  4
  • Richard  · 技术社区  · 10 年前

    我正在从python脚本中调用一个方法,其中一个变量作为参数。 一旦进入该方法,当我试图查看变量args的值时,“printargs”和仅执行“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 回复  |  直到 10 年前
        1
  •  14
  •   Martijn Pieters    10 年前

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

    请参见 Debugger Commands section :

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

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

    (强调我的)。

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

    我个人认为 (a)rgs 命令有点无意义;它使用 str() 而不是 repr() ; 这使得具有相似属性的对象之间存在差异 __str__ 输出值不可见(例如 str 与。 unicode ,或BeautifulSoup元素与带有HTML的字符串等)。