Python 入坑笔记
t = (1)
定义的不是tuple,是1
这个数!这是因为括号()
既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1
。所以,只有1个元素的tuple定义时必须加一个逗号,
,来消除歧义t = (1,)
- 动态类型语言,变量基于引用。
- 只要
x
是非零数值、非空字符串、非空list等,就判断为True
,否则为False
。 - 默认参数是程序创建伊始时自动创建的一个变量的引用,故而有义务使默认参数指向一个不变的对象,如整数类型,字符串类型,而不能是List这种可变类型。
- 返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
Python 生成器&迭代器
生成器
- 列表生成器:
[... for ... in ... if ...]
- Iterator 生成器:
(... for ... in ... if ...)
- 生成式函数:
yeild
关键词,调用一次生成式函数就相当于创建了一个Iterator
对象
迭代器
Iterable
是可迭代对象,Iterable
是指那些可以用于for-in
迭代的对象,包括集合对象list,dict,set,map,str
和generator
Iterator
是迭代器,Iterator
是指那些可以作用到next()
上的对象。Iterator
是“惰性”的,只会按需迭代生成,可以用list()
等转化为“非惰性”的列表。Iterator
可能是一个无限的数据流。可以用iter()
创建一个Iterator
,Iterator
可以用next()
函数迭代。Iterator
包括generator
。Iterator, Iterable
均可以用于for-in
循环。