zoukankan      html  css  js  c++  java
  • 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:项目说明书

  • 相关阅读:
    对TCP/IP协议的一些看法(12):UDP协议
    对TCP/IP协议的一些看法(11):窗口
    对TCP/IP协议的一些看法(10):TCP协议(2)
    对TCP/IP协议的一些看法(9):TCP协议(1)
    对TCP/IP协议的一些看法(8):DNS协议
    对TCP/IP协议的一些看法(7):传输层
    [BFS]翻币问题
    [BFS]骑士旅行
    [BFS]电子老鼠闯迷宫
    [BFS]P1434 [SHOI2002]滑雪
  • 原文地址:https://www.cnblogs.com/godlover/p/11867830.html
Copyright © 2011-2022 走看看