1.内置函数剩余部分 map reduce filter 2.函数递归 3.模块

内置方法的补充

map 映射

map(func,可迭代对象) map对象

func()只可以有一个未知参数,可以有多个默认参数

map会将可迭代对象中的每一个值进行修改,然后映射到一个map对象中,再将对象转成元组或列表,只能转一次,取完就没有了,但是可以开辟一个新的空间,将map对象放进这个空间,然后就可以以这个新的空间对应的变量名对这个map对象进行多次转换

name_list = ['egon', 'jason', 'sean', 'tank', 'alex']
map_obj = map(lambda name: name + ' like milk' if name == 'tank' else name + ' like water', name_list)
# print(map_obj)
# print(list(map_obj))
# print(tuple(map_obj))

#将map_obj中的值取出,开辟新的空间给他,就可以多次反转
# new_obj = tuple(map_obj)
# print(new_obj)
# print(list(new_obj))
# print(''.join(new_obj)
print(tuple(list(map_obj)))

reduce 合并

首先使用它的时候,要去from functools import reduce

reduce(函数地址值,可迭代对象,初始值:默认为0)

函数地址值对应的函数方法最多只可以有两个未知参数

每次从可迭代对象中获取两个值进行合并

初始值:执行reduce函数时,都是从初始值开始合并

# 1——100累加的和
# for 循环来写:
init = 0
for line in range(1, 101):
    init += line
print(init)
# reduce来实现
data = reduce(lambda x, y: x + y, range(1, 101),0)
print(data)

filter 过滤

filter(函数地址,可迭代对象)

filter 会将函数中返回的结果为True对应的参数值,过滤过来,过滤过来的值会添加到filter对象中

最多可以有一个未知参数

# 将后缀为.1的名字过滤过来
name_list = ['1.1','2.1','3.1','4.1','5.1','5.2']
filter_obj = filter(lambda name:name.endswith('.1'),name_list)
print(list(filter_obj))



函数递归

函数递归指的是重复‘直接调用或间接调用’函数本身,这是一种函数嵌套调用的表现形式

直接调用:指的是在函数内部,直接调用函数本身

间接调用:两个函数之间相互调用间接造成递归

python中有递归默认深度:限制递归次数998

这不是一个定值,在每一台操作系统中会根据硬盘来设置默认递归深度

import sys #获取操作系统的模块

获取递归深度:sys.getrecursionlimit().

设置递归深度:print(sys.setrecursionlimit(数值))

单纯的递归调用时没有任何意义的,想要有意义,必须遵循两个原则:

回溯:

指的是重要地执行,每一次执行 都要拿到一个更接近于结果地值,回溯必须要有一个终止条件

递推:

当回溯找到一个终止条件后,开始一步一步往上递推

def age(n):
    if n == 1:
        return 18
    # 不写return无法递归
    return age(n - 1) + 2
print(age(5))
26

什么是包:

包指的是内部包含_ init _.py的文件夹

包的作用:

存放模板,可以更好地管理模块

可以将项目拆分成一个个地功能,分别存放

模块

什么是模块:

模块是一系列的功能的结合体

模块包着一堆函数与代码

模块本质是一个个的。py文件

来源:

1.python内置的模快:python解释器的

sys,time,os,turtle

2.第三方的模块:(别人的)

requests

3.自定义的模块:(自己写的)

demo。py

模块的表现形式:

1.使用python编写的py文件

2.编译后的共享库,dll或c和c++的库

3.包下面带有_ init _.py的一组文件

为甚么要使用模块:

可以帮助我们更好的管理代码

如何创建,编写并使用模块?

创建py文件:

​ 在py文件中写代码

在一个文件中,通过import关键字导入模块

import 模块名

ps :import 模块时,模块不能加.py后缀

1.在使用模板的阶段,必须要注意,谁是执行文件,谁是被导入文件

2.模块在导入时发生的情况:

会先执行当前的执行文件,并产生执行文件的名称空间

当执行到导入模块的代码时,被导入的模块也会产生名称空间

会将被导入的模块加载到内存中

模块的导入方式:

import 模块

from 包/模块 import 模块/函数名,变量名,类

给模块起别名:

import demo as d

模块在首次导入时,就已经固定好了,当前文件查找顺序是在内存中

循环导入问题:

model1.py

​ from model2 import name

name = 'jason'

model2.py

​ from model1 import name

name = 'sean'

解决循环导入问题:

1.需要查找的名字放在导入模块的上方

2.在函数内部导入,将模块变成函数名称

软件开发目录规范

1.conf:用于存放配置文件的文件夹

2.code:核心业务代码。py

3.interface:接口 接口内获取数据前的逻辑代码,通过后才能获取数据

4.db:用于存放文件数据

5.lib:存放公共功能

6.bin:存放启动文件

启动文件

7.log:用于存放日志文件,用于记录用户的操作记录

8.readme.txt:项目说明书

原文地址:https://www.cnblogs.com/godlover/p/11867830.html