python如何初始化元组对象? 例如,当我创建一个像
这样的对象时>>> object = ('Shark')
它将对象类型显示为str
>>> type(object)
<type 'str'>
然而,如果我创建一个像
这样的对象>>> object = ('Shark',)
它将其类型显示为tuple
>>> type(object)
<type 'tuple'>
为什么这样? python如何创建/初始化元组,str对象?
答案 0 :(得分:3)
来自docs:
一个特殊问题是构造包含0或1的元组 items:语法有一些额外的怪癖来容纳这些。空 元组是由一对空括号构成的; 一个元组 通过使用逗号来构造一个项目(不是 足以将一个值括在括号中。)
因此,如果没有尾随,
这两个陈述是等价的:
>>> 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)
答案 1 :(得分:1)
包含在parens中的表达式只是表达式(就像数学表达式中的parens,如(2+2)*4
)。
但是,如果你添加一个尾随逗号,或者用逗号分隔的parens中有多个元素,它将成为一个元组。此外,如果您写()
,您将获得一个空元组。
答案 2 :(得分: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'>
>>>