PYTHON_NOTE_3_内置函数_装饰器_生成器并行

Posted on 2017-12-28 18:48  LeeGY  阅读(191)  评论(0)    收藏  举报

Python的内置函数官方文档:https://docs.python.org/3.6/library/functions.html

  Built-in Functions  
abs() dict() help() min() setattr()
all() dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() ord() sum()
bytearray() filter() issubclass() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()  
delattr() hash() memoryview() set()  

这里先不一一列举,之后会找一天时间详细的写个小文档.

 

 

装饰器

装饰器可以扩展已经写好的函数,并且不会改变原函数的代码和调用方式.

现在有一个函数已经实现了简单的加法运算:

1 def my_func(a,b):
2    return a+b
3 
4 print(my_func(1,2))
5 
6 
7 >>>>3

那么现在我想不修改函数和调用代码的情况下为my_func添加一个乘法的功能

这时候就需要装饰器:

 1 def autho(type="+"):
 2     def deco(func):
 3         def wra(*args, **kwargs):
 4             ret = func(*args,**kwargs)
 5             if type == "*":
 6                 ret = args[0]*args[1]
 7             return ret
 8         return wra
 9     return deco
10 
11 @autho("*")
12 def my_func(a,b):
13     return a+b
14 
15 
16 print(my_func(1,2))
17 
18 >>>2

 

生成器

生成器看似是一种节约内存提高效率的执行方法.深入学习可能会更加理解,先写个小例子:

def test1(item):
    while True:
        info = yield
        print("%s吃了[%d]个%s"%(info["name"],info["i"],item))


test2=test1("巧克力")
test2.__next__()
test3=test1("包子")
test3.__next__()

for i in range(1,5):
    test2.send({"name":"小明","i":i})
    test3.send({"name":"小王","i":i})

>>>
小明吃了[1]个巧克力
小王吃了[1]个包子
小明吃了[2个巧克力
小王吃了[2]个包子
小明吃了[3]个巧克力
小王吃了[3]个包子
小明吃了[4]个巧克力
小王吃了[4]个包子