您的位置:首页 > 其它

2.18周四笔记

2016-02-18 22:59 232 查看
day4

迭代器:

1.

li=[11,22,33,44,55,66,77]

count =len(li)

start = 0

while count>start:

print(li[start])

start +=1

用索引,所有语言几乎都支持while

2.for循环的本质

a.创建一个特殊的东西(迭代器 = iter() )

b.根据这个东西,去操作列表Li的内容

c.执行迭代器会返回一个对象,对象是含有next方法

d.一个一个的去内存取li里面的值

obj = iter(li)

while Ture:

item = obj__next__()

item(item)

去完就会报stop...(for 循环不报错是因为try except Exception: )

3.总结:

a.while,索引,下标取数据,随意取

b.for, 执行迭代器iter,获取一个对像-->执行对象的next方法,按顺序拿

生成器(非常重要)

1.python 2.7 里

range(10) —>内存立马创建0-9,如果数字大,吃内存

xrange(10)—>内存里没有数字

for i in xrange(10):

内存第一次循环时先创建i= 0

内存第二次循环内存里创建i=1

。。。。。。。。。。。。。。

内存第九次循环内存里创建i=9

print (i)

2.

redis———hash(哈希)

监控 www.baidu.com 每个时段的流量数据

结构:hash(哈希)

n1———k1 = v1

n2———k11 = v11

key value

服务器100G 本地电脑10G

dic.keys() #全部获取

3.文件操作

f = open(‘file.log’)

#f.read() # 会一下子把日子读入内存

for line in f : #触发f的__inter__方法

print(line) #生成器,内存消耗问题解决了

def show():

yield(line1)

yield(line2)

yield(line3)

my_f = show()

for line in my_f:

print(line)

4.yield 关键词

-------------

def show(): #函数

return 123

i = show()

print(i)

输出 123

-------------

def show(): #生成器

yield 123

i = show()

print(i)

输出 generator

5.总结:

def show():

yield(line1)

yield(line2)

yield(line3)

my_f = show()

for line in my_f:

print(line)

‘’’

line1

line2

line3

’’’’

-----运行逻辑-----

1.如果函数返回含有yield,函数返回值特殊的东西(含有next方法;必须和for一起使用)

2.for,函数返回特殊东西,内部执行迭代,如果遇到yield,就会把yield后面的值拿到就跳出函数的同时并记住上次

执行的位置,同时把该值赋值给for 的i

3.然后再继续执行函数,回到上一次执行代码的位置,继续往下执行

-----简单理解-----

1.生成器的返回值必须通过迭代器执行

2.yield冻结状态,记住上一次执行的位置

装饰器

def login(func): func=原来的show

def wrapper(*arg,**kwargs):

print(‘before’)

ret =func((*arg,**kwargs)

print(ret)

print(‘after’)

return tet

return wrapper

def show()

return ‘show’

#show 内存值 show()执行函数

new_show = login(show)

‘’’

相当于

def new_show():

ret = show(*arg,**kwargs)

return ret

‘’’

--------

@login

def show()

return ’show’

功能上实现了一个嵌套

递归

正则表达式

基础算法

常用模块:json pickle
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: