python中print函数的奇怪行为
我有点不确定为什么Python中的python中print函数的奇怪行为,python,printing,Python,Printing,我有点不确定为什么Python中的print函数以不同的方式输出值。考虑下面的代码示例: #!/usr/bin/python3 import numpy as np array = np.arange(3.0, dtype=np.float32) print ("array: ", array) print ("array: ", {0: 2.0 * array}) print ("array {0}".format(2.0 * array)) 结果如下: array: [0. 1
print
函数以不同的方式输出值。考虑下面的代码示例:
#!/usr/bin/python3
import numpy as np
array = np.arange(3.0, dtype=np.float32)
print ("array: ", array)
print ("array: ", {0: 2.0 * array})
print ("array {0}".format(2.0 * array))
结果如下:
array: [0. 1. 2.]
array: {0: array([0., 2., 4.], dtype=float32)}
array [0. 2. 4.]
第二种格式与其他格式不同。这一个显式地显示了数据格式“array”和数据类型“float32”。这是预期的行为吗
有人能给我解释一下这背后的原理吗?
print
使用str
将其参数转换为str
。所以你的前两个例子相当于
print ("array: ", str(array))
print ("array: ", str({0: 2.0 * array}))
但是请注意区别:在第一个调用中,array
是str
的参数。在第二个调用中,参数只是一个包含ndarray
实例的dict
dict.uu str_uu
使用repr
,而不是str
,从其中包含的值创建字符串
第三个示例不涉及
print
对str
的任何隐式调用,因为print
只接收一个str
参数。不过,format
方法默认情况下使用str
将其一个参数转换为字符串,以将其包含在格式字符串中。print
使用str
将其参数转换为str
。所以你的前两个例子相当于
print ("array: ", str(array))
print ("array: ", str({0: 2.0 * array}))
但是请注意区别:在第一个调用中,array
是str
的参数。在第二个调用中,参数只是一个包含ndarray
实例的dict
dict.uu str_uu
使用repr
,而不是str
,从其中包含的值创建字符串
第三个示例不涉及print
对str
的任何隐式调用,因为print
只接收一个str
参数。不过,format
方法默认情况下使用str
将其参数之一转换为字符串,以将其包含在格式字符串中