1、Python 变量和数据类型变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型。如果字符串本身包含怎么办?比如我们要表示字符串 Im OK ,这时,可以用“ “括起来表示:“Im OK“类似的,如果字符串包含“,我们就可以用 括起来表示:Learn “Python“ in imooc如果字符串既包含又包含“怎么办?这个时候,就需要对字符串的某些特殊字符进行转义,Python 字符串用进行转义:Bob said “Im OK“.字符串前面加个前缀 r ,表示这是一个 raw 字符串,里面的字符就不需要转义了。例如:r(_)/ (_)/表示多行字符串
2、,可以用.表示: Line 1Line 2Line 3还可以在多行字符串前面添加 r ,把这个多行字符串也变成一个 raw 字符串:Python 在后来添加了对 Unicode 的支持,以 Unicode 表示的字符串用 u.表示,比如:print u中文Python 中布尔类型and 和 or 运算的一条重要法则:短路计算。1. 在计算 a and b 时,如果 a 是 False,则根据与运算法则,整个结果必定为 False,因此返回 a;如果 a 是 True,则整个计算结果必定取决与 b,因此返回 b。2. 在计算 a or b 时,如果 a 是 True,则根据或运算法则,整个计算结
3、果必定为 True,因此返回 a;如果 a 是 False,则整个计算结果必定取决于 b,因此返回 b。List 和 Tuple 类型list用 把 list 的所有元素都括起来,就是一个 list 对象。通常,我们会把 list 赋值给一个变量。由于 Python 是动态语言,所以 list 中包含的元素并不要求都必须是同一种数据类型,我们完全可以在 list 中包含各种数据用 -1 这个索引来表示 list 最后一个元素,倒数第二个元素用 -2,以此类推,注意不要越界。用 list 的 append() 方法,把元素追加到 list 的末尾;用 list 的 insert()方法,它接受两
4、个参数,第一个参数是索引号,第二个参数是待添加的新元素。用 list 的 pop()方法总是删掉 list 的最后一个元素,并且它还返回这个元素。如果要删除的元素 a 不在末尾,先定位的 a 的索引,例如 a 的索引是 2,则用 pop(2)把 a 删除。对 list 中的某一个索引赋值,就可以直接用新的元素替换掉原来的元素,list 包含的元素个数保持不变。tuple 是另一种有序的列表,中文翻译为“ 元组 ”。tuple 和 list 非常类似,但是,tuple一旦创建完毕,就不能修改了。tuple创建 tuple 和创建 list 唯一不同之处是用( )替代了 。Python 规定,单元
5、素 tuple 要多加一个逗号“,” ,这样就避免了歧义。例:t = (1,)条件判断和循环Python 代码的缩进规则。具有相同缩进的代码被视为代码块。缩进请严格按照 Python 的习惯写法:4 个空格,不要使用 Tab,更不要混合 Tab 和空格,否则很容易造成因为缩进引起的语法错误。在 Python 交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车if 语句后接表达式,然后用:表示代码块开始。根据条件表达式的值为 True 或者 False ,分别执行 if 代码块或者 else 代码块。else 后面有个“:”避免嵌套结构的 if . else .,我们可以用 if
6、. 多个 elif . else . 的结构,一次写完所有的规则。elif 意思就是 else if。for 循环可以依次把 list 或 tuple 的每个元素迭代出来:for name in L:代码块 #依次取出 list L 中的每个元素并将元素赋值给 name。while 循环不会迭代 list 或 tuple 的元素,而是根据表达式判断循环是否结束。while 表达式:Dict 和 Set 类型Dict花括号 表示这是一个 dict,然后按照 key: value, 写出来即可。最后一个 key: value 的逗号可以省略。Dict 的特点:dict 的第一个特点是 查找速度快,
7、第二个特点是存储的 key-value 序对是没有顺序的,第三个特点是作为 key 的元素必须 不可变。dict 对象有一个 values() 方法,这个方法把 dict 转换成一个包含所有 value 的 listSetset 持有一系列元素,这一点和 list 很像,但是 set 的元素没有重复,而且是无序的,这点和 dict 的 key 很像。创建 set 的方式是调用 set() 并传入一个 list,list 的元素将作为 set 的元素。由于 set 存储的是一组不重复的无序元素,因此,更新 set 主要做两件事:一是把新的元素添加到 set 中,二是把已有元素从 set 中删除。
8、添加元素时,用 set 的 add()方法,删除 set 中的元素时,用 set 的 remove()方法。函数在 Python 中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。Python 的函数返回多值其实就是返回一个 tuple。函数的默认参数的作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值。如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数:def fn(*args):print argsPython 解释器会把传入的一组参
9、数组装成一个 tuple 传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。切片指定索引范围的操作,用循环十分繁琐,因此,Python 提供了切片(Slice)操作符。例如:L0:3,指取前 3 个元素,从索引 0 开始取,直到索引 3 为止,但不包括索引 3。切片操作还可以指定第三个参数,例 L:n,会每 n 个元素取出一个来。range()函数可以创建一个数列:range(1, 101)对于 list,既然 Python 支持 L-1取倒数第一个元素,那么它同样支持倒数切片,记住倒数第一个元素的索引是-1。倒序切片包含起始索引,不包含结束索引。迭代Pyt
10、hon 中,迭代永远是取出元素本身,而非元素的索引。使用 enumerate() 函数,我们可以在 for 循环中同时绑定索引 index 和元素name实际上,enumerate() 函数把:Adam, Lisa, Bart, Paul变成了类似:(0, Adam), (1, Lisa), (2, Bart), (3, Paul)因此,迭代的每一个元素实际上是一个 tuple。如果我们知道每个 tuple 元素都包含两个元素,for 循环又可以进一步简写为:for index, name in enumerate(L):print index, -, namedict 对象有一个 value
11、s() 方法,这个方法把 dict 转换成一个包含所有 value的 list;itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。items() 方法把 dict 对象转换成了包含 tuple 的 list,我们对这个 list 进行迭代,可以同时获得 key 和 value。items() 也有一个对应的 iteritems(),iteritems() 不把 dict 转换成 list,而是在迭代过程中不断给出 tuple,所以, iteritems() 不占用额外的内存。x * x for x in range(1, 11)这种写法就是 Python 特有的列表生成式。利用列表生成式,可以以非常简洁的代码生成 list。列表生成式的 for 循环后面还可以加上 if 判断:x * x for x in range(1, 11) if x % 2 = 0,有了 if 条件,只有 if 判断为 True 的时候,才把循环的当前元素添加到列表中。