python 进阶 知识点

切片:

取前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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值