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文件的两种用途

 

posted @ 2021-07-06 11:10  Gnomeshghy  阅读(51)  评论(0)    收藏  举报