切片:
取前N个元素,也就是索引为0-(N-1)的元素,可以用循环:
L = [‘Michael’, ‘Sarah’, ‘Tracy’, ‘Bob’, ‘Jack’]
**>>> r = []n = 3
for i in range(n):
… r.append(L[i])**
…r
[‘Michael’, ‘Sarah’, ‘Tracy’]
对这种经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。
对应上面的问题,取前3个元素,用一行代码就可以完成切片:
>>> L[0:3] #python中特有的快速切片
[‘Michael’, ‘Sarah’, ‘Tracy’]
既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试:
L[-2:]
[‘Bob’, ‘Jack’]L[-2:-1]
[‘Bob’]
记住倒数第一个元素的索引是-1。
后面的切片取不到
tuple也可以用切片操作,只是操作的结果仍是tuple:
字符串’xxx’也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串:
==和is的使用
拷贝(import copy):
浅拷贝(copy.copy)和深拷贝(copy.deepcopy)
赋值:简单地拷贝对象的引用,两个对象的id相同。
浅拷贝的特点:拷贝生成的对象与原对象,两对象是不同的(内存地址不同),内容相同。
浅拷贝:创建一个新的组合对象,这个新对象与原对象共享内存中的子对象。
深拷贝:创建一个新的组合对象,同时递归地拷贝所有子对象,新的组合对象与原对象没有任何关联。虽然实际上会共享不可变的子对象,但不影响它们的相互独立性。
动态创建类 元类
~~
生成器:
~~ yield(关键字):使方法停止当前的状态 生成器下一个是 x–next–或则next(x)send在生成器中用来发送信息,
可以用来向生成器发送结束指令。 生成器还可以用来模拟协程。生成器关键字yield的用法跟return有些像。
#生成器 :列表生成器
import time
y=(i**2 for i in range(10000000000000000)) #由列表生成式变成的生成器
for i in y:
print(i)
time.sleep(1)
#跟下面的是一样的
while True:
print(y.next())
print(next(y))
迭代器(iterator):
什么是迭代器
迭代器是访问可迭代对象的工具
迭代器是指用iter(obj)函数返回的对象(实例)
迭代器是指用next(it)函数获取可迭代对象的数据
迭代器的用途:
用迭代器可以依次访问可迭代对象的数据
列表和字典是可迭代对象 但不是迭代器 因为不可以用next()方法
生成器就是迭代器
闭包:
方法嵌套方法,外部方法返回内部方法的引用,内部方法返回外部方法的局部变量
三成嵌套:
def first():
def second():
def third():
pass
return
return
装饰器:
闭包 和 语法糖 结合的机制
装饰器作用: 不修改 源代码 ,对其添加 功能!!
import time
def outer(fun):
def inner(num):
t1=time.time()
fun(num)
t2=time.time()
print(t2-t1)
return inner #把里面的函数返回出来
@outer
def my(num):
for i in range(num):
print(i)
my(10000)
**my()方法就相当于 inner()方法
fun()相当于
for i in range(num):
print(i)
这就是装饰器的应用,inner方法是outer方法的对象,即是fun
什么是垃圾回收机制:
python 的内存管理
以引用计数 为主 ,标记清楚和分代收集为辅
内建属性:–dict-- 获得 对象的 自定义属性 --doc-- 获得 类的说明
内建方法: 【map 将序列对应函数 进行映射】 【filter 使用 函数 过滤 序列 】 【reduce 使用函数 配合 序列 实现累积】【sorted 排序】
高阶函数:
partial 将函数 赋予初始值 ,返回新函数
wraps 消除 装饰器 方法方法的影响
常用标准库: os sys time datetime …
hashlib----> md5 , sha256…
用户的注册和登录 都需要密文 传输!!!
import hashlib
md5 = hashlib.md5()
md5.update(‘how to use md5 in python hashlib?’)
print md5.hexdigest()