初始模块

初始模块

匿名函数

匿名函数就是没有名字的函数
一次性使用,随时使用随时定义
与(max,min,sorted,map,reduce,filter)联合使用

例:
"""
需求:  找出工资最多的人
"""

salaries = {
    "axx": 30000000,
    "bgon": 3000,
    "zxx": 1000
}

def f(name):
    return salaries[name]
print(max(salaries,key=f))
# 这个是基于普通的方法实现,max可以跟两个参数,一个是一个可迭代对象,还有一个是函数
# 上述代码意思是,max比较大小,字典参与比较的是字典的k值,后面用一个函数做接受,可以把字典的k值传给这个函数,继而得到新资。

print(max(salaries,key=lambda name:salaries[name]))
# 这个定义一个匿名函数
min,sorted用法同上

names = ['lxx', "hxx", "wxx"]
print(list(map(lambda name:name + '_vip', names)))
# map(函数, 可迭代对象)
# 从names里面取出一个值,传给这个匿名函数,做一个字符串拼接,
# 上述需求,用列表生成式依旧可以达到
# 生成的是一个map对象,

names = ['lxx', 'hxx_vip', 'wxx_vip']
print(list(filter(lambda name:name.endswith('_vip'), names)))


from functools import reduce
print(reduce(lambda x,y:x+y, [1,2,3,4,],100))
# reduce(匿名函数,一个可迭代对象,累加的初始值)

模块

自定义模块:
   一个py文件就是一个模块
    包是一个存放有__init__.py文件的文件夹

模块有三种来源:
    自带的
       内置
        标准库
    第三方库
      pip3 install ...
    自定义的

一个py文件的两种用途

一个py文件有两种用途:
   其一: 执行文件
   其二: 被导入的模块
具体区分就看有没有if __name__ == '__main__': 有则是运行文件,无则用来被导入

模块的导入

import...
from...import...

首次导入模块发生的三件事
"""
1.产生执行文件的名称空间。
2.产生模块的名称空间,以及模块内变量的名称空间
3.调用名称空间
"""

两者导入的优缺点:
   import: 指名道姓,但是写起来麻烦
   from...import...: 写起来不麻烦,但是容易与当前文件的变量名冲突
   两者都可以用as起别名
from...import * 
   导入一个文件中的所有名称空间。
   可以使用__all__来控制*

解决循环导入的三种方式

1. 解决循环导入的根本解决方法就是不要出现循环导入问题。
2. 将需要循环导入共享的数据提上去,提到导入之前
3. 用一个函数封装循环导入,利用了函数在定义阶段只检测语法不执行代码的特性。

模块搜索路径

内存---> 内置---->  sys.path路径下的文件夹

# from aaa.bbb.ccc import spam  # 导入语句中出现的点,代表路径分隔符
# spam.money  # 使用语句中出现的点,代表问某一个名称空间要名字
posted @ 2021-07-05 15:25  剧终cur  阅读(42)  评论(0)    收藏  举报