Python为什么变量和返回值显示与打印变量的差值?

2024-09-28 20:46:58 发布

您现在位置:Python中文网/ 问答频道 /正文

>>> pkt = sniff(count=2,filter="tcp")
>>> raw  = pkt[1].sprintf('%Padding.load%')
>>> raw
"'\\x04\\x00\\x00\\x00\\x00\\x00\\x00\\x00g\\xc4|\\x00\\x00\\x00\\x00\\x00'"


>>> print raw
'\x04\x00\x00\x00\x00\x00\x00\x00g\xc4|\x00\x00\x00\x00\x00'

使用打印时,原稿产量不同


Tags: rawcountfiltertcpprint产量paddingx00
2条回答

一个是字符串的repr()表示,另一个是打印的字符串。可以粘贴回解释器以再次生成相同字符串的表示形式。你知道吗

Python交互提示在回送变量时总是使用repr()print总是使用str()字符串表示。你知道吗

它们在其他方面是相同的。尝试print repr(raw)进行比较:

>>> "'\\x04\\x00\\x00\\x00\\x00\\x00\\x00\\x00g\\xc4|\\x00\\x00\\x00\\x00\\x00'"
"'\\x04\\x00\\x00\\x00\\x00\\x00\\x00\\x00g\\xc4|\\x00\\x00\\x00\\x00\\x00'"
>>> print "'\\x04\\x00\\x00\\x00\\x00\\x00\\x00\\x00g\\xc4|\\x00\\x00\\x00\\x00\\x00'"
'\x04\x00\x00\x00\x00\x00\x00\x00g\xc4|\x00\x00\x00\x00\x00'
>>> print repr("'\\x04\\x00\\x00\\x00\\x00\\x00\\x00\\x00g\\xc4|\\x00\\x00\\x00\\x00\\x00'")
"'\\x04\\x00\\x00\\x00\\x00\\x00\\x00\\x00g\\xc4|\\x00\\x00\\x00\\x00\\x00'"

^{} and ^{}类的内置方法可以返回所需的任何字符串值。有些类将简单地使用str()作为repr。你知道吗

class AClass(object):

   def __str__(self):
      return "aclass"

   def __repr__(self):
      return str(self)

class AClass2(AClass):

   def __repr__(self):
      return "<something else>"

In [2]: aclass = AC
AClass   AClass2  

In [2]: aclass = AClass()

In [3]: print aclass
aclass

In [4]: aclass
Out[4]: aclass

In [5]: aclass2 = AClass2()

In [6]: print aclass2
aclass

In [7]: aclass2
Out[7]: <something else>

In [8]: repr(aclass2)
Out[8]: '<something else>'

In [9]: repr(aclass)
Out[9]: 'aclass'

repr只是用来显示类的“标签”,例如,当您打印一个包含一堆实例的列表时……它应该是什么样子的。你知道吗

str是如何将实例转换为适当的字符串值,以便在操作中使用。你知道吗

相关问题 更多 >