4
str(4)
我只想知道原始数字和字符串数字之间的区别,以及python解释器如何将其转换为C,然后转换为机器代码。
答案 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
)应该是类似字节的对象(bytes
或bytearray
)。如果对象是
bytes
或bytearray
,则在内部使用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}}实现,它们可以完全不同。