在 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:
- 我在 [23=] 调用 对象中做什么?还是 调用 保留给函数?
- [8] 中返回了什么?它不是
ndarray
的内容。它没有意义,但好像返回的是创建它的函数调用,只是它缺少 numpy.
部分。
- [6] 中的
[1,2,3]
是列表还是只是 numpy.array()
个参数的语法?
- 有没有办法在 [8] 中不使用
array()
部分且不使用 print()
来获取 ndarray
的内容?
- 使用精确的技术术语,您能否详细说明为什么 [3] 和 [8] 如此不同?
- 一般来说,控制台中的一种类型叫什么(例如 [2])? 命令、调用、输入?
- [3]、[5]、[8] 和 [10] 分别叫什么? 输出?有哪些同义词?
- [*](见第一句)叫什么?它不是精确的代码。
首先,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。您键入一个语句,它会执行它,如果它是一个带有值的表达式,它会打印该值。
- 您调用一个函数,您使用或分配一个变量。
所以在 [2] 中你使用了变量
a_tuple
。 IDLE 对其进行评估并打印其值。
- 在 [8] 中,它打印
ndarray
的表示形式,这是一个 numpy 数组。 numpy数组的表示形式为array()
. 内方括号中的内容
[1, 2, 3]
是一个列表,作为参数传递给 numpy.array()
函数。 numpy 然后将创建一个数组,其内容是列表的元素。
- 您可以使用
ndarray.tolist()
. 将数组转换为列表
- [3] 和 [8] 之间的唯一区别是您正在评估和打印的值的类型。 [3] 是一个列表,[8] 是一个数组。不同的类型以不同的方式显示。
- 它们是 Python 语句。
- 是的,它们是输出。更具体地说,它们是您在前几行中键入的表达式的值。
- 是的,这是代码。 REPL 的目的是允许您以交互方式执行代码,而不是脚本文件中的 运行 代码。
考虑以下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:
- 我在 [23=] 调用 对象中做什么?还是 调用 保留给函数?
- [8] 中返回了什么?它不是
ndarray
的内容。它没有意义,但好像返回的是创建它的函数调用,只是它缺少numpy.
部分。 - [6] 中的
[1,2,3]
是列表还是只是numpy.array()
个参数的语法? - 有没有办法在 [8] 中不使用
array()
部分且不使用print()
来获取ndarray
的内容? - 使用精确的技术术语,您能否详细说明为什么 [3] 和 [8] 如此不同?
- 一般来说,控制台中的一种类型叫什么(例如 [2])? 命令、调用、输入?
- [3]、[5]、[8] 和 [10] 分别叫什么? 输出?有哪些同义词?
- [*](见第一句)叫什么?它不是精确的代码。
首先,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。您键入一个语句,它会执行它,如果它是一个带有值的表达式,它会打印该值。
- 您调用一个函数,您使用或分配一个变量。
所以在 [2] 中你使用了变量
a_tuple
。 IDLE 对其进行评估并打印其值。 - 在 [8] 中,它打印
ndarray
的表示形式,这是一个 numpy 数组。 numpy数组的表示形式为array()
. 内方括号中的内容
[1, 2, 3]
是一个列表,作为参数传递给numpy.array()
函数。 numpy 然后将创建一个数组,其内容是列表的元素。- 您可以使用
ndarray.tolist()
. 将数组转换为列表
- [3] 和 [8] 之间的唯一区别是您正在评估和打印的值的类型。 [3] 是一个列表,[8] 是一个数组。不同的类型以不同的方式显示。
- 它们是 Python 语句。
- 是的,它们是输出。更具体地说,它们是您在前几行中键入的表达式的值。
- 是的,这是代码。 REPL 的目的是允许您以交互方式执行代码,而不是脚本文件中的 运行 代码。