Python 学习日记4

一,装饰器

  在原有的函数前面增加功能,且不改变原函数的调用方式。

 1 def wrapper1(func):   
 2     def inner1():
 3         print('wrapper1 ,before func')
 4         func()   # f
 5         print('wrapper1 ,after func')
 6     return inner1
 7 
 8 def wrapper2(func):  # inner1
 9     def inner2():
10         print('wrapper2 ,before func')
11         func()   # inner1
12         print('wrapper2 ,after func')
13     return inner2
14 
15 @wrapper2
16 @wrapper1
17 def f():
18     print('in f')
19 
20 f()
学习案例

  装饰器的固定形式

1 def timer(func):
2     def inner(*args,**kwargs):
3 
4         re = func(*args,**kwargs)
5 
6         return re
7     return inner

二,迭代器

  可迭代协议:内部含有_iter_方法的都是可迭代的

  迭代器协议:内部含有_iter_方法和_next_方法

  什么是迭代器 迭代器 = iteration(可迭代的),自带一个_next_方法

 1 def average():
 2     sum_money = 0
 3     day = 0
 4     avg = 0
 5     while True:
 6         money = yield avg
 7         sum_money += money
 8         day += 1
 9         avg = sum_money/day
10 
11 g = average()
12 next(g)
13 print(g.send(200))
14 print(g.send(300))
15 print(g.send(600))

  凡是可作用于for循环的对象都是Iterable类型

  凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列

三,程序报错

  摘取了一些博客上的常见报错信息

  IOError 输入/输出异常;基本上是无法打开文件

  IndentationError 语法错误(的子类) ;代码没有正确对齐

  KeyError 试图访问字典里不存在的键

  NameError 使用一个还未被赋予对象的变量

  UnboundLocalError 试图访问一个还未被设置的局部变量,

  最近在模拟sql语句时对where的条件判断理解较差,希望能和大家共同进步

猜你喜欢

转载自www.cnblogs.com/AQQB/p/8993053.html