0

python如何初始化一个元组对象?例如,当我创建一个对象时

>>> object = ('Shark')

它显示对象的类型为 str

>>> type(object)
<type 'str'>

虽然,如果我创建一个像

>>> object = ('Shark',)

它将其类型显示为tuple

>>> type(object)
<type 'tuple'>

为什么这样 ??python 究竟是如何创建/初始化一个元组 str 对象的?

4

3 回答 3

3

来自文档

一个特殊的问题是包含 0 或 1 项的元组的构造:语法有一些额外的怪癖来适应这些。空元组由一对空括号构成;一个包含一个项目的元组是通过一个带有逗号的值来构造的(将单个值括在括号中是不够的)。

因此,如果没有尾随,,这两个语句是等效的:

>>> x = 1
>>> x
1
>>> x = (1)
>>> x
1

但这些都是tuples

>>> x = 1,       #or (1,)
>>> x
(1,)
>>> x = 1, 2, 3  #or (1, 2, 3)
>>> x
(1, 2, 3)
于 2013-10-18T06:00:41.780 回答
1

双引号或单引号内的任何内容都将在 Python 中被视为字符串。两者之间没有区别——就像在 PHP 中一样,双引号字符串中的变量实际上会被计算,而单引号将按原样显示。

任何包含在左括号和右括号内的内容都将被视为元组。但是,如果只有一个对象被放置在元组中,它将被视为对象的类型。例如:

>>> a = (9)
>>> type(a)
<class 'int'>
>>> 
>>> a = ([9])
>>> type(a)
<class 'list'>
>>> 
>>> a = ('hello!')
>>> type(a)
<class 'str'>
>>> 
>>> a = {'a':1, 'b':1}
>>> type(a)
<class 'dict'>
>>> 

请注意,对象的长度无关紧要(放置在元组内部的对象,而不是元组本身)。

现在,如果您要在元组内的对象之后放置一个逗号,Python 将假定有另一个对象即将到来,它会将其视为一个元组并且不会给您一个错误。另外,请注意 Python 用来存储许多东西的默认对象也是一个元组——这意味着即使您没有将表达式括在括号中,它也会默认为您执行此操作:

>>> a = 9, 8, 7
>>> a
(9, 8, 7)
>>> type(a)
<class 'tuple'>
>>> 
>>> a = 'Hello', 'Python', 'Typle'
>>> a
('Hello', 'Python', 'Typle')
>>> type(a)
<class 'tuple'>
>>> 
于 2013-10-18T06:49:16.310 回答
1

括在括号中的表达式就是那个表达式(它就像数学表达式中的括号,比如(2+2)*4)。

但是,如果你添加一个尾随逗号,或者如果括号内有多个以逗号分隔的元素,它将成为一个元组。此外,如果你写,你会得到一个空元组()

于 2013-10-18T06:01:53.410 回答