【问题标题】:The weird behavior of the print function in pythonpython中打印函数的奇怪行为
【发布时间】:2020-02-06 19:15:44
【问题描述】:

我有点不确定为什么 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. 2.]
array:  {0: array([0., 2., 4.], dtype=float32)}
array [0. 2. 4.]

第二个的格式与其他的不同。这一个明确地显示了数据格式“数组”和数据类型“float32”。这是预期的行为吗?

有人可以向我解释这背后的原因吗?

【问题讨论】:

    标签: python printing


    【解决方案1】:

    print 使用str 将其参数转换为str。所以你的前两个例子相当于

    print ("array: ",  str(array))
    print ("array: ",  str({0: 2.0 * array}))
    

    但请注意区别:在第一次调用中,arraystr 的参数。在第二次调用中,参数只是一个dict包含一个ndarray 实例。 dict.__str__ 使用 repr,而不是 str,根据其中包含的值创建字符串。

    第三个示例不涉及printstr 的任何隐式调用,因为print 只接收一个str 参数。不过,format 方法默认使用 strits 参数之一转换为字符串,以将其包含在格式字符串中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 2014-06-10
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      相关资源
      最近更新 更多