Basic Conceptions - QLGQ/learning-python GitHub Wiki
核心数据类型
数字、字符串、列表、字典、元组、文件和集合一般被认为是核心对象(数据)类型。类型、 None 和布尔型有时也被定义在这样的分类中。 还有多种数字类型(整数、浮点数、复数、分数和十进制数)和多种字符串类型( Python 2.X 中的一般字符串和 Unicode 字符串,以及 Python3.X 中的文本字符串和字节字符串)。
##核心类型 它们被认作是 “ 核心 ” 类型是因为它们是 Python 语言自身的一部分,并且总是有效的;为了建立其他的对象,通常必须调用被导入模块的函数。大多数核心类型都有特定的语法去生成其对象:例如, 'spam' 是一个创建字符串的表达式,而且决定了可以被应用的操作的集合。正是因 为这一点,核心类型与 Python 的语法紧密地结合在一起。与之相比较,必须调用内置的 open 函数去创建一个文件对象。
不可变性
一个具有 “ 不可变性 ” 的对象是一个在其创建以后不能够被改变的对象。 Python 中的数字、字符串和元组都属于这个分类。尽管无法就地改变一个不可变的对象,但是你总是可以通过运行一个表达式创建一个新的对象。
序列
一个 “ 序列 ” 是一个对位置进行排序的对象的集合。字符串、列表和元组是 Python 中所有的序列。它们共同拥有一般的序列操作,例如,索引、合并以及分片,但又各自有自己的类型特定的方法调用。
映射
术语 “ 映射 ” ,表示将键与相关值相互关联映射的对象。 Python 的字典是其核心类型集中唯一的映射类型。映射没有从左至右的位置顺序;它们支持通过键获取数据,并包含了类型特定的方法调用。
多态
“ 多态 ” 意味着一个操作符(如 + )的意义取决于被操作的对象。这将变成使用好 Python 的关键思想之一(或许可以去掉之一吧):不要把代码限制在特定的类型上,使代码自动适用于多种类型。
迭代
如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)。在Python中,迭代是通过for ... in来完成的。默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()。
迭代器
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。 可以使用isinstance()判断一个对象是否是Iterator对象。 可以使用isinstance()判断一个对象是否是Iterable对象。 生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。 把list、dict、str等Iterable变成Iterator可以使用iter()函数。
生成器
在Python中,这种一边循环一边计算的机制,称为生成器:generator。 创建生成器的两种方法: 1.第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator。 2.定义generator的另一种方法,如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。