一、列表生成式:
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