模块

模块

1.函数递归

函数的递归调用是函数嵌套调用的一种特殊形式,具体指的是在调用以一个函数的过程中又直接或者间接地调用自己,称之为函数的递归调用

函数的递归调用就是用函数实现的循环

 一个递归的过程应该分为两个阶段:
 1、回溯:向下一层一层调用
 2、递推:向上一层一层返回

2.匿名函数

匿名函数的格式

f = lambda x,y:x + y

filter:

 names = ['egon_nb',"lxx_sb","hxx_sb"]

 res =(name for name in names if name.endswith('sb'))
 print(res)

 res = filter(lambda name:name.endswith('sb'),names)
 print(res)
 print(list(res))

map:

names = ['egon','lxx','zxx']

 res = [name + "vip" for name in names]
 print(res)

 res = map(lambda name:name + "vip",names)
 print(res)
 print(list(res))

reduce:

from functools import reduce

 reduce(lambda x,y:x+y,[1,2,3,4,5,6],100)
 res = reduce(lambda x,y:x+y,["a","b","c"])
 print(res)

3.模块

1.什么是模块

模块就是一系列功能的集合体

模块分为四种类别:

  1.一个py文件就可以是一个模块

  2.包:就是一个存放有__init__.py文件的文件夹

  3.使用C编写并链接到python解释器的内置模块

  4、已被编译为共享库或DLL的C或C++扩展

模块又三种来源

  1、python解释器自带的

    内置的

    标准库

  2.第三方的库

  3.自定义的库

2.为何要用模块

  1.拿来主义,极大地提升开发效率

  2.解决代码冗余问题

4.模块的使用

 首次导入模块发生三件事
 1、会触发spam.py运行,所以会产生一个模块的名称空间
 2、运行spam.py的代码,将运行过程中产生的名字都丢到模块的名称空间中
 3、在当前执行文件的名称空间中拿到一个名字spam,该名字就是指向模块的名称空间的

可以为模块起别名,在最后加上as;也可以导入多个模块。

from ...import... 与import...的对比

#唯一的区别就是:使用from...import...则是将spam中的名字直接导入到当前的名称空间中,所以在当前名称空间中,直接使用名字就可以了、无需加前缀:spam.

#from...import...的方式有好处也有坏处
    好处:使用起来方便了
    坏处:容易与当前执行文件中的名字冲突

5.模块的循环导入问题

方案一:把其他模块要用到的变量放到导入之前

方案二:把导入语句放入函数中

 

posted @ 2021-03-31 15:32  余鑫  阅读(114)  评论(0)    收藏  举报