1.__getattribute__属性访问拦截器(内建属性
class Foo(object):
def __init__(self):
self.a = 100
def __getattribute__(self, name):
if name == "a":
# return self.a # __getattribute__("a")
return super(Foo,self).__getattribute__("a")
else:
return 200
# 递归 函数内部调用自身
obj = Foo()
# obj.a # __getattribute__("a")
# print(obj.c)
print(obj.a) # __getattribute__("a")
2.range
range(stop) -> list of integers
range(start, stop[, step]) -> list of integers
start:计数从start开始。默认是从0开始。例如range(5)等价于 range(0, 5);
stop:到stop结束,但不包括stop.例如:range(0, 5) 是[0, 1, 2, 3, 4] 没有5
step:每次跳跃的间距,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
python2中range返回列表,python3中range返回⼀个迭代值。如果想得到列表,可通过list函数
3.lambda函数
def add(num1, num2):
return num1+num2
# lambda表达式 创建一个匿名函数
# lambda 传入参数 : 返回值
lambda num1,num2 :num1+num2
#lambda会返回一个函数对象
4.map函数 map函数会根据提供的函数对指定序列做映射
li= [1, 2, 4, 5]
# map(函数, 处理的对象)
# 返回可迭代对象
# def fun(x):
# return x+1
# ret = map(fun, li)
ret = map(lambda x:x+1, li)
# print(list(ret))
li1 = [1, 2, 3, 4]
# li2 = [5, 6, 7, 8]
li2 = [5, 6]
ret = map(lambdax,y:x+y, li1, li2)
print(list(ret))
5.filter函数——过滤
li = [1, 2, 3, 4, 5,6, 7, 8]
#filter过滤数据
# filter(函数, 对象)
def fun(x):
# 如果要保留这个元素,返回True
# 如果要丢弃这个元素, 返回False
if x%2 == 0:
return True
else:
return False
# ret = filter(fun,li)
ret = filter(lambdax: x%2==0, li)
print(list(ret))
6.reduce函数——累积
from functoolsimport reduce
li = [10, 20, 40,50]
# reduce(函数, 对象)
ret = reduce(lambdax, y: x+y, li)
# lambda x, y :x+y
# 10 20 30
#
# 30 40 70
#
# 70 50 120
# print(ret)
# reduce(函数, 对象, 起始值)
ret = reduce(lambdax, y: x+y, li, 100)
# lambda x, y :x+y
# 100 10 110
#
# 110 20 134
#....
print(ret)