python--第四天总结

时间:2023-12-23 15:02:32

lambda表达式

处理简单函数
自动返回

学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即:

  1. # 普通条件语句
  2. if 1 == 1:
  3. name = 'wupeiqi'
  4. else:
  5. name = 'alex'

# 三元运算
 name = 'wupeiqi' if 1 == 1 else 'alex'

对于简单的函数,也存在一种简便的表示方式,即:lambda表达式

# ###################### 普通函数 ######################

  1. # 定义函数(普通方式)
  2. def func(arg):
  3. return arg + 1
  4. # 执行函数
  5. result = func(123)

# ###################### lambda ######################

  1. # 定义函数(lambda表达式)
  2. my_lambda = lambda arg : arg + 1
  3. # 执行函数
  4. result = my_lambda(123)

  lambda存在意义就是对简单函数的简洁表示

内置函数 二

一、map

遍历序列,对序列中每个元素进行操作,最终获取新的序列。

python--第四天总结

eg:

每个元素增加100 

  1. li = [11, 22, 33]
  2. new_list = map(lambda a: a + 100, li)

两个列表对应元素相加

  1. li = [11, 22, 33]
  2. sl = [1, 2, 3]
  3. new_list = map(lambda a, b: a + b, li, sl)

二、filter

对于序列中的元素进行筛选,最终获取符合条件的序列

python--第四天总结

获取列表中大于12的所有元素集合
  1. li = [11, 22, 33]
  2. new_list = filter(lambda arg: arg > 22, li) #filter第一个参数为空,将获取原来序列

三、reduce

对于序列内所有元素进行累计操作

python--第四天总结

python--第四天总结

获取序列所有元素的和

  1. li = [11, 22, 33]
  2. result = reduce(lambda arg1, arg2: arg1 + arg2, li)
  3. # reduce的第一个参数,函数必须要有两个参数
  4. # reduce的第二个参数,要循环的序列
  5. # reduce的第三个参数,初始值

yield生成器

1、对比range 和 xrange 的区别

  1. >>> print range(10)
  2. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  3. >>> print xrange(10)
  4. xrange(10)
如上代码所示,range会在内存中创建所有指定的数字,而xrange不会立即创建,只有在迭代循环时,才去创建每个数组
def nrange(num):
temp = -1
while True:
temp = temp + 1
if temp >= num:
return
else:
yield temp 自定义生成器nrange

自定义生成器nrange

2、文件操作的 read 和 xreadlinex 的的区别

  1. read会读取所有内容到内存
  2. xreadlines则只有在循环迭代时才获取

装饰器

装饰器是函数,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或类,使用装饰器可以在函数执行前和执行后添加相应操作。

  1. def wrapper(func):
  2. def result():
  3. print 'before'
  4. func()
  5. print 'after'
  6. return result
  7. @wrapper
  8. def foo():
  9. print 'foo'
import functools

def wrapper(func):
@functools.wraps(func)
def wrapper():
print 'before'
func()
print 'after'
return wrapper @wrapper
def foo():
print 'foo'
#!/usr/bin/env python
#coding:utf-8 def Before(request,kargs):
print 'before' def After(request,kargs):
print 'after' def Filter(before_func,after_func):
def outer(main_func):
def wrapper(request,kargs): before_result = before_func(request,kargs)
if(before_result != None):
return before_result; main_result = main_func(request,kargs)
if(main_result != None):
return main_result; after_result = after_func(request,kargs)
if(after_result != None):
return after_result; return wrapper
return outer @Filter(Before, After)
def Index(request,kargs):
print 'index' if __name__ == '__main__':
Index(1,2)