day26
什么是匿名函数? 匿名函数就是没有名字的函数
1 def foo(x, y): 2 return x + y 3 4 #匿名函数的定义 5 # lambda x, y: x + y #相当于上面的函数 6 # 调用的两种方式 7 # 第一种:给匿名函数绑定一个变量名(相当于函数),不推荐使用 8 # print(f) 9 # print(f(1,2)) 10 # 第二种: 11 # print((lambda x, y: x + y)(1, 2)) 12 # res = (lambda x, y: x + y)(1, 2) 13 # print(res) 14 15 # 匿名函数的应用场景 16 salaries = { 17 "axx": 30000000, 18 "bgon": 3000, 19 "zxx": 1000 20 } 21 # print(max(salaries)) 22 def f(name): 23 return salaries[name] 24 25 26 # print(max(salaries,key=f)) 27 # print(max(salaries,key=lambda name:salaries[name])) 28 # print(min(salaries,key=lambda name:salaries[name])) 29 # print(sorted(salaries)) #从小到大的顺序排列 30 # print(sorted(salaries,key=lambda name:salaries[name]))
二、map,filter,reduce的使用方法
1 # names = ['lxx', "hxx", "wxx"] 2 # # res=[name+"_vip" for name in names] 3 # # res=(name+"_vip" for name in names) 4 # 5 # res = map(lambda name:name+"_vip",names) #生成一个迭代器 6 # print(res) 7 # print(list(res)) 8 9 10 # filter() 11 # names = ['lxx', "hxx_vip", "wxx_vip"] 12 # # res = [name for name in names if name.endswith('_vip')] 13 # # print(res) 14 # 15 # 16 # res=filter(lambda name:name.endswith('_vip'),names) #通过判断真假进行过滤 17 # print(res) 18 # print(list(res)) 19 20 # reduce()累加 21 from functools import reduce 22 23 # res = reduce(lambda x, y: x + y, [1, 2, 3, 4],100) #数字的累加 24 res = reduce(lambda x, y: x + y, ["a", "b", "c", "d"], "xxx") #字符串的累加 25 print(res)
三、面向过程编程
1、面向过程编程思想
过程就是流程,即先干什么再干什么后干什么
基于该思想写程序就好比在设计一条条的流水线
优点:复杂的问题流程化、进而简单化
缺点:牵一发而动全身,扩展性差
四、模块的基本使用
自定义模块
1、一个py就是一个模块
2、包就是一个存放有__init__.py文件的文件夹,包的本质就是一个模块
三种来源:
1、自带的
内置
标准库
2、第三方的
pip3 install 第三方库 #安装模块
3、自定义的
作用:减少代码冗余
五、导入模块
1 # 首次导入模块发生了2件事: 2 # 1、会触发spam.py的运行,会产生一个模块的名称空间,用来存放模块运行过程中产生的名字 3 # 2、会在当前文件的名称空间中产生一个名字spam,该名字指向模块的名称空间 4 import spam 5 6 # import spam # 后续的导入直接引用之前已经产生的名称空间 7 # import spam 8 # import spam 9 # import spam 10 11 # money = 100000000 12 # print(money) 13 # print(spam.money) 14 15 # def read1(): 16 # print('xxxxx',money) 17 18 # read1() 19 # spam.read1() 20 21 # print(spam.read1) 22 # print(spam.read2) 23 # print(spam.change) 24 25 # spam.read2() 26 # print(spam.money) 27 # spam.change() 28 # print(spam.money) 29 # print(money) 30 31 import与from...import...d导入 32 # ======================import语法 33 # import spam 34 # spam.名字 35 36 # import spam as sm 37 # sm.名字 38 39 # import spam as sm, os as xxx, sys, re 40 # ======================from ... import ...语法 41 # from spam import money 42 # from spam import money as m,read1,read2,change 43 44 # from spam import money ,read1,read2,change 45 # 46 # money = 200 47 # # print(money) 48 # # print(read1) 49 # # print(read2) 50 # # print(change) 51 # 52 # def read1(): 53 # print('自己的read1',money) 54 # read1() 55 56 from spam import * 57 # 58 # print(money) 59 # print(read1) 60 # print(read2) 61 # print(change)
六、循环导入问题
七、模块的搜索路径
1 # 模块搜索路径,优先级从高到低 2 # 1、内存 3 # 2、内置 4 # 3、sys.path 5 # import spam 6 # print(spam.money) 7 8 # import sys 9 # print(sys.path) 10 11 # import time 12 # 13 # import spam 14 # print(spam.money) 15 # 16 # time.sleep(10) 17 # 18 # import spam 19 # print(spam.money) 20 21 # import time 22 # time.sleep(100) 23 24 # import sys 25 # print(sys.path) 26 # sys.path.append(r'D:\py18期\day26\代码\aaa') 27 # import spam 28 29 # from aaa.bbb.ccc import spam # 导入语句中出现的点,代表路径分隔符 30 # 31 # spam.money # 使用语句中出现的点,代表问某一个名称空间要名字
八、py文件的两种用途

浙公网安备 33010602011771号