2015-03-30 2 views
2

Я вызываю метод из скрипта python, который имеет одну из переменных в качестве аргументов. Как только я вхожу в метод, когда я пытаюсь увидеть значение переменной args, «print args» и просто выполнение «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 

ответ

12

args является командой отладчика PDB. Используйте !args, чтобы показать фактическую переменную.

Смотрите Debugger Commands section:

а (РГО)
Печать списка аргументов текущей функции.

и

[!] Заявление
Выполнить (одна строка) заявление, в контексте текущего кадра стека. Восклицательный знак может быть опущен, если первое слово утверждения не похоже на команду отладчика.

(Emphasis mine).

В выводе args вы можете увидеть значение аргумента args в первой строке.

Лично я нахожу команду (a)rgs немного бессмысленной; он печатает все значения, используя str() вместо repr(); это делает разницу между объектами с аналогичными __str__ выходными значениями невидимыми (например, str против unicode или элементом BeautifulSoup по сравнению с строкой с HTML и т. д.).

Смежные вопросы