当我们转换一个简单的no时,在内存或后台实际发生了什么。或串起来的东西?

时间:2017-10-01 09:28:08

标签: python-3.x

4
str(4)

我只想知道原始数字和字符串数字之间的区别,以及python解释器如何将其转换为C,然后转换为机器代码。

3 个答案:

答案 0 :(得分:0)

如果你调用str(x)..在这种情况下,4 ... 4将成为一个字符串。因此,您得到的是'

;

答案 1 :(得分:0)

来自Python文档:

  

str()方法返回“非正式”或很好的可打印方式   给定对象的表示。

     

对于字符串,这将返回字符串本身。

     

如果未提供encoding和errors参数,则str()方法   内部调用对象的__str__()方法。

     

如果找不到__str__()方法,则会调用repr(obj)。

     

repr(object)的区别在于str(object)没有   总是尝试返回eval();

可接受的字符串      

它的目标是返回一个可打印的字符串。如果没有给出任何论据   返回空字符串''

     

如果提供了encoding和errors参数,则为第一个参数   (object)应该是类似字节的对象(bytesbytearray)。

     

如果对象是bytesbytearray,则在内部使用str()方法   致电bytes.decode(encoding, errors)

     

否则,它在调用之前获取缓冲区中的bytes对象   decode()方法。

有关详细信息,请参阅https://docs.python.org/2/library/functions.html#str

答案 2 :(得分:0)

Python解释器不会将其转换为C或机器代码。 Python 编译器将其编译为Python字节码,然后由Python虚拟机执行(用C语言编写并编译为本机代码)。

1 0 LOAD_NAME 0 (str) 2 LOAD_CONST 0 (4) 4 CALL_FUNCTION 1 6 RETURN_VALUE 的字节码如下:

str

因此它加载4的函数对象和常量str,然后以该常量值作为参数调用函数对象。

然后,__str__函数将尝试调用内部“to -string convertion function”,该函数也可以使用int对象上的str(something)访问。因此,您可以说something.__str__()会调用__str__

__str__的实现取决于对象类型,对于整数,这只是将其转换为int的十进制字符串表示形式。自定义类型可以定义自己的{{1}}实现,它们可以完全不同。