学习日记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__"

 

posted @ 2021-07-05 20:22  小白白柏柏  阅读(76)  评论(0)    收藏  举报