学习日记20
什么是匿名函数
匿名函数就是没有名字的函数
为何要用匿名函数
用于临时使用一次的场景
和其他函数配合使用
如何定义匿名函数
def foo(x,y):
return x+y
print((lambda x,y: x + y)(1,2))
salaries = {
'egon' : 321,
'jason' : 312,
'songhao' : 313
}
print(max(salaries,key= lambda name: salaries[name]))
print(min(salaries,key= lambda name: salaries[name]))
print(sorted(salaries,key= lambda name: salaries[name]))
names= ['lxx','hxx','wxx']
print(list(map(lambda name:names+"_vip",names)))
names= ['lxx','hxx_vip','wxx']
print(list(filter(lambda name:names.endswith('_vip'),names)))
form functools import reduce
res = reduce(lambda x,y:x+y,[1,2,3,4],555)
print(res)
面向过程编程思想
面向过程编程思想
过程就是流程,即先干啥再干什么后干什么,
基于该思想写程序就好比再设计一条条的流水线
优点:复杂的问题流程化,进而简单化
缺点:牵一发而动全身,扩展性差
模块
自定义模块
1.一个py就是一个模块
2.包就是一个存放有_init_.py文件的文件夹,包的本质就是一个模块
三种来源:
1.自带的
内置
标准库
2.第三方的
pip3 install 第三方库
3.自定义的
减少代码冗余,把公共的功能提取出来
首次导入模块
1.会触发模块文件的运行,会产生一个模块的名称空间,用来存放模块运行过程中产生的名字
2.会在当前文件空间中产生一个名字spom,该名字指向模块的名称空间(后续的导入直接引用之前已经产生的名称空间)
名称空间的关系在定义阶段就已经产生了,与调用无关
import语法
import spam
spam.名字
import spam as sm(别名)
sm.名字
import spam as sm,os as xxx,sys,re
from .. import ...语法 (指名道姓,不易冲突,书写麻烦)
from spam import money,read1,read2,change
from spam import *
把所有的名字都拿过来,加大了冲突的机率,书写方便
__all__ = ["名字","名字"]
*号就只导入__all__里面的名字
循环导入问题
解决循环导入问题的最好办法就是不出现循环导入问题
第一种思路:名字定义放到最上面
第二种思路:把要的值放到中间模块中,大家都能使用(必须是字符串类型)
模块的搜索路径
优先级
内存 ----》内置----》sys.path (环境级)
自己定义的模块名字尽量不要和内置的模块名字重名
自定义的模块放到sys.path 里面
第一种
sys.path.append("文件路径")
第二种
放在执行程序的同一个文件夹里
在导入语句中文件分隔符是.
在使用语句中出现的.代表问某一个名称空间要名字
区分py文件的两种用途
第一种用途是被导入使用
第二种是直接执行使用
区别就是执行程序会把自己的所在文件夹加入到sys.path 环境当中去
内置变量
当文件被导入的时候__name__的值是__main__
if __name__ == "__main__"