In Python IDLE, what's the difference between 'print'ing a variable and just writing the variable?

瘦欲@ 提交于 2019-11-28 14:16:29

print(variable) equals to print(str(variable))

whereas

variable equals to print(repr(variable))

My guess is that the __repr__ and __str__ method of the class dpkt.ethernet.Ethernet produce these completely different results.

Update: Having a look at the source code tells me I am right.

There are two functions for representing data as a string in python: repr() and str().

When you use a print statement, the str function is called on whatever arguments you supplied for the print statement (and a newline is appended to the end of the result). For example, x = 100; print x will call str(x). The result ("100") will have a newline appended to it, and it will be sent to stdout.

When you execute something other than a print statement, the interpreter will print whatever value the expression yields using repr, unless the value is None, in which case nothing is printed.

In most cases, there are only subtle differences between the two. Objects, however, often define their own non-identical __str__ and __repr__ methods (which define the behavior for the str and repr built-in functions for that object). In your example, the eth object's __repr__ method must be different from the __str__ method.

I would speculate that the __str__ method is returning a binary string representation of the object to send across a network, but I can't be sure.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!