Python元组学习笔记

来源:互联网 发布:微商发图软件 编辑:程序博客网 时间:2024/03/29 18:00

元组不是那么”不可变”

虽然元组对象本省不可变, 但这并不意味着元组包含的可变对象也不可变了.

t = (['xyz', 123], 23, -103.4)\#t = (['xyz', 123], 23, -103.4)
t[0][1] = ['abc', 'def']\#t = (['xyz', ['abc', 'def']], 23, -103.4) 

默认集合类型

所有多对象的, 逗号分隔的, 没有明确用符号定义的, 比如说用方括号表示列表和用圆括号表示元组一样, 等等这些集合默认的类型都是元组.

'abc', -4.24e93, 18+6.6j, 'xyz'\#('abc', -4.24e93, 18+6.6j, 'xyz')

所有函数返回的多对象(不包括有符号封装的)都是元组类型. 有符号封装的多对象集合其实就是返回的一个单一的容器对象.

def foo1():return obj1, obj2, obj3 #返回包含三个对象的元组def foo2():return [obj1, obj2, obj3] #返回一个单一对象, 包含三个对象的列表def foo3():return (obj1, obj2, obj3) #返回三个对象的元组, 显式定义

为了避免讨厌的副作用, 最好是总是显式的用圆括号表达式表示元组或者创建一个元组.

4, 2 < 3, 5       #(4, True, 5)(4, 2) < (3, 5)  #tuple comparison

单元素元组

圆括号包裹一个单一元素时,首先被作为分组操作, 而不是元组的分界符. 可通过在第一个元素后面添加一个(,);来表明这是一个元组而不是在做分组操作

type(['abc'])  #a listtype(('abc'))  #a string, not a tupletype(('abc', )) #a tuple
0 0
原创粉丝点击