python如何初始化一个元组对象?例如,当我创建一个对象时
>>> object = ('Shark')
它显示对象的类型为 str
>>> type(object)
<type 'str'>
虽然,如果我创建一个像
>>> object = ('Shark',)
它将其类型显示为tuple
>>> type(object)
<type 'tuple'>
为什么这样 ??python 究竟是如何创建/初始化一个元组 str 对象的?
来自文档:
一个特殊的问题是包含 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)
双引号或单引号内的任何内容都将在 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'>
>>>
括在括号中的表达式就是那个表达式(它就像数学表达式中的括号,比如(2+2)*4
)。
但是,如果你添加一个尾随逗号,或者如果括号内有多个以逗号分隔的元素,它将成为一个元组。此外,如果你写,你会得到一个空元组()
。