PythonDay13

第十三章

今日内容

  • 匿名函数

  • 内置函数二

  • 闭包

匿名函数

匿名函数就是一行函数,关键字是lambda

lambda x:x
# lambda 参数:返回值
x 是普通函数的形参 可以不定义形参
:x 普通函数的返回值(只能返回一个数据类型)
   
f = lambda x:x+6
print(f(1)) # 结果:7
print(f.__name__) # 查看函数的名字 函数名为lambda

lst = [lambda :i for i in rang(5)]
print(lst[0]())


# 结果:4
面试题拆解:
lst = []
for i in range(5):
   def func():
       return i
   lst.append(func)

内置函数二

字典的合成方式

dict([(1,2),(3,4)])             # 中括号也可以换成小括号
# {1: 2, 3: 4}

dict(k=1,v=2,c=3)
# {'k': 1, 'v': 2, 'c': 3}

dic1 = {"key1":1,"key2":2}
dic2 = {"a":1,"b":2}
print(dict(**dic1,**dic2))
# {'key1': 1, 'key2': 2, 'a': 1, 'b': 2}

print()

sep:每个元素之间分割的字符,默认是" "空格
end:print执行完后的结束语句,默认是\n
file:文件句柄,默认是显示到屏幕,也可以写进文件,例如:
print(1,2,3,4,file=open("test","w",encoding="utf-8"))

sum

算出可迭代对象中的和,只能算int

abs

绝对值

dir

print(dir(list))
print(dir(str))
# 查看当前对象所有方法,返回的是列表

zip

拉链
lst1 = [1,2,3,4]
lst2 = ['a','b','c','d','e']

面试题:
print(dict(zip(lst1,lst2)))
# {1: 'a', 2: 'b', 3: 'c', 4: 'd'}

format

print(format('alex','>20'))     # 左对齐
print(format('alex','<20')) # 右对齐
print(format('alex','^20')) # 居中

进制转换
print(format(10, "b")) # bin 二进制
print(format(10, "08o")) # oct 八进制
print(format(10, "08x")) # hex 十六进制
print(format(0b1010), "d") # 十进制

reversed

反转
print(list(reversed("alex")))
# 得到的是迭代成列表之后的反转
# 得到的是一个新列表

filter

过滤
lst = [1,2,3,4,5,6]
print(list(filter(lambda x:x>1,lst)))
# 过滤掉大于1的数字

lst = [{'id':1,'name':'alex','age':18},
      {'id':1,'name':'wusir','age':17},
      {'id':1,'name':'taibai','age':16},]

print(list(filter(lambda x:x['age']>16,lst)))
# 留下年龄大于16的信息

map

映射函数(将可迭代对象中的每个元素执行指定的函数)
print(list(map(lambda x,y:x+y,[1,2,3],[11,22,33,44])))
# 将每个列表的对应元素相加

print([i*8 for i in [1,2,3,4]])
# 8,16,24,32

sorted

print(sorted([1,-22,3,4,5,6],key=abs))  # key指定排序规则
# 排序 执行了绝对值之后的列表

lst = ["三国演义","红楼梦","铁道游击队","西游记","水浒传","活着"]
print(sorted(lst,key=len))
# 通过长度排序

lst = [{"age": 19}, {"age1": 20}, {"age2": 80}, {"age3": 10}]
# print(sorted(lst, key=lambda x: x.values()))
print(sorted(lst, key=lambda x: x.keys(), reverse=True))
# 通过键和值排序

max,min

最大值和最小值

reduce

from functools import reduce   # 累计算

# 内部实现原理
def func(x,y):
    return x+y
print(reduce(func,[1,2,3,4,5]))

print(reduce(lambda x,y:x+y,[1,2,3,4,5]))

闭包

闭包
# 1.在嵌套函数中,使用非本层且非全局变量的就是闭包
# print(inner.__closure__)  判断是否是闭包  返回None就不是
  
# 闭包的作用:
    # 1.保护数据的安全性
    # 2.装饰器

 

posted @ 2019-08-20 17:28  徐-  阅读(154)  评论(0编辑  收藏  举报