python高级特性

一、列表生成式:

  1、[x * x for x in range(1, 11) if x % 2 == 0]

  2、应用:

    在爬虫爬到站内网址时,一般用的是站内URI,所以是无法发起请求的,一般情况下,需要加上一个前缀地址,一半可以用列表生成器来做。

  3、代码:

    

 1 '''
 2     func:列表生成
 3 
 4 '''
 5 #首先生成uri,类似于小说网站的格式
 6 uri=['/article/'+str(i)+'.html' for i in range(1,10)]
 7 
 8 print(uri)
 9 #一般上面的内容为爬虫爬到的
10 
11 #下面是需要进行处理的内容
12 url=['http://biquge'+i for i in uri]
13 
14 print(url)

  结果:

    

二、生成器:

  关键点:是yeild关键字,普通函数是在流程执行完毕之后或者遇到return语句时候,才会退出执行。而生成器不同。生成器会在每次执行到yield定义的关键字时,会返回这个变量,然后再接着执行。其用途是在一个需要大量计算时,不必等到每个变量都计算完毕时,才会返回,而是计算一个返回一个。

  代码演示:

    

 1 '''
 2     func:generator演示
 3 '''
 4 
 5 def getUpper(a):
 6     for i in a:
 7         yield i.upper()
 8 
 9 if __name__=='__main__':
10     for i in getUpper([chr(i) for i in range(97,123)]):
11         print(i)

 

 

三、函数式编程:

   1、filter函数:

       

    2、匿名函数:

    lambda x:x*x

   3、装饰器:

     其定义为接收一个函数作为参数,并返回一个函数。

       (1)代码执行:

      

 1 '''
 2     func:装饰器练习
 3     author:monty
 4 '''
 5 
 6 import functools
 7 import datetime
 8 
 9 #定义装饰器
10 def log(func):
11     @functools.wraps(func)
12     def wrapper(*args,**kw):
13         print(func.__name__+" is run:"+datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
14         return func(*args,**kw)
15     return wrapper
16 
17 @log
18 def sum(a,b):
19     print(a+b)
20 
21 
22 if __name__=='__main__':
23     sum(1,2)
24 
25     sum(100,200)

 

 四、匿名函数:

  语法格式:lambda x:x*x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  

posted @ 2018-11-18 18:10  monty12  阅读(183)  评论(0编辑  收藏  举报