在 Python REPL 中,使用变量和打印变量有什么区别?

In Python REPL, what is the difference between using a variable and printing it?

考虑以下Python 3.7.2代码[*] i 运行 in IDLE(我添加了行号以供参考):

[1] >>>> a_tuple = (1,2,3)
[2] >>>> a_tuple
[3] (1,2,3)
[4] >>>> print(a_tuple)
[5] (1,2,3)
[6] >>>> an_ndarray = numpy.array([1,2,3])
[7] >>>> an_ndarray
[8] array([1, 2, 3])
[9] >>>> print(an_ndarray)
[10] [1, 2, 3]

我正在学习计算机科学术语和 Python,并且我有以下 questions/requests:

  1. 我在 [23=] 调用 对象中做什么?还是 调用 保留给函数?
  2. [8] 中返回了什么?它不是ndarray的内容。它没有意义,但好像返回的是创建它的函数调用,只是它缺少 numpy. 部分。
  3. [6] 中的 [1,2,3] 是列表还是只是 numpy.array() 个参数的语法?
  4. 有没有办法在 [8] 中不使用 array() 部分且不使用 print() 来获取 ndarray 的内容?
  5. 使用精确的技术术语,您能否详细说明为什么 [3] 和 [8] 如此不同?
  6. 一般来说,控制台中的一种类型叫什么(例如 [2])? 命令调用输入?
  7. [3]、[5]、[8] 和 [10] 分别叫什么? 输出?有哪些同义词?
  8. [*](见第一句)叫什么?它不是精确的代码。

首先,REPL 中的一个单独的变量将打印它的 对象表示 ,通过对该对象调用 repr() 函数,“调用变量”;看起来像 a_tuple()

赋值明显没有输出

这解释了 1-3 和 6-8

打印语句将 运行 str() 在对象上运行并显示输出。

两者都映射到所有对象类型上定义的“魔法函数”

What is the difference between __str__ and __repr__?

rule of thumb: __repr__ is for developers, __str__ is for customers

IDLE 是读取-评估-打印循环的一个示例,又名 REPL。您键入一个语句,它会执行它,如果它是一个带有值的表达式,它会打印该值。

  1. 调用一个函数,您使用分配一个变量。 所以在 [2] 中你使用了变量 a_tuple。 IDLE 对其进行评估并打印其值。
  2. 在 [8] 中,它打印 ndarray 的表示形式,这是一个 numpy 数组。 numpy数组的表示形式为array().
  3. 内方括号中的内容
  4. [1, 2, 3] 是一个列表,作为参数传递给 numpy.array() 函数。 numpy 然后将创建一个数组,其内容是列表的元素。
  5. 您可以使用 ndarray.tolist().
  6. 将数组转换为列表
  7. [3] 和 [8] 之间的唯一区别是您正在评估和打印的值的类型。 [3] 是一个列表,[8] 是一个数组。不同的类型以不同的方式显示。
  8. 它们是 Python 语句。
  9. 是的,它们是输出。更具体地说,它们是您在前几行中键入的表达式的值。
  10. 是的,这是代码。 REPL 的目的是允许您以交互方式执行代码,而不是脚本文件中的 运行 代码。