模块
模块
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.模块的循环导入问题
方案一:把其他模块要用到的变量放到导入之前
方案二:把导入语句放入函数中

浙公网安备 33010602011771号