• 内置函数+递归+模块使用


    内置函数

    map

    映射:(函数地址,可迭代对象)—>map对象

    map对象会将可迭代对象中的每一个值进行修改,然后映射到一个map对象中,可以再将map对象转换成列表/元组.

    演示
    name_list = ['egon','sean','tank']
    map_obj = map(lambda name:name + 'dsb' if name == 'tank' else name + 'xsb',name_list)
    print(list(map_obj))
    print(tuple(map_obj))
    不能同时打印两个,因为map对象只能被引用一次
    

    reduce

    合并:

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

    reduce(lambda x,y:x+y,range(1,101),0)
    

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

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

    from functools import reduce
    num = reduce(lambda x,y:x+y,range(1,101),0)
    print(num)
    

    filter

    过滤: (函数地址,可迭代对象)–>filter对象

    name_list = ['sean_dsb','nick_dsb','wm_dsb','lipeng']
    
    filter_obj = filter(lambda name:name.endswith('_dsb'),name_list)
    print(list(filter_obj))
    print(tuple(filter_obj))
    

    函数递归

    定理

    直接上代码(在python解释器里被限制了递归次数为1000,但在现实生活中,这是永无止尽的,你懂的)

    def gilr():
        print('girl:我想要')
        boy()
    def boy():
        print('boy:我给你')
        gilr()
    gilr()
    

    正经理论

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

    直接调用:指的是在函数内置,直接调用函数本身(自交行为)

    间接调用:两个函数之间相互调用间接造成递归(69式行为)

    获取它的(递归)深度:‘sys.getrexursionlimit()’

    设置递归深度:‘sys.setrecursionlimit(深度值)’

    ps:单纯的递归没有任何意义

    有意义的递归

    递推:一层一层的递归调用下去,进入下一层递归的问题规模都将减小.

    回溯:回溯需要一个明确的结束条件,在满足该条件开始一层一层的回溯.

    模块

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

    包的作用:存放模块,包能更好的管理模块;

    模块

    模块是一系列功能的结合体,里面包着一堆函数和代码.

    模块本身是一个.py文件

    模块来源

    内置模块:sys,os,time,datetime,loging,json等都是内置模块

    第三方模块:requestes

    自定义模块:自定义一个py文件存放功能,通过import导入使用.

    优点

    将一个个功能分别管理,存放在不同的py文件中,比如函数;为了更方便的管理功能代码

    使用

    在导入时,需要注意谁是执行文件,谁是被导入文件

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

    导入:

    from 包/模块 import 模块/(函数名、变量名、类名)

    在执行文件中直接import导入

    模块导入发生的三件事:

    1. 会先执行当前执行文件,并产生执行文件中的名称空间
    2. 当执行到被导入模块的代码时,被导入的模块会产生一个模块的名称空间
    3. 会将被导入模块的名称空间加载到内存中

    给模块取别名:

    import 模块名 as 模块别名

    循环导入

    model1.py
    	from model2 import name
        name = 'json'
    model2.py
    	from model1 import name
        name = 'tank'
    

    解决循环导入问题:

    1. 需要查找的名字放在导入模块上方
    2. 在函数内部导入,将模块变成函数名称空间中的名字

    补充

    软件开发目录规范

    注意:每次写项目时,都要新建一个文件夹与项目工程,必须让文件夹作为项目的根目录.

    conf:用于存放配置文件

    core:核心业务代码

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

    db:用于存放文件数据

    lib:存放公共文件

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

    bin:里面存放启动文件

    readme.txt:项目说明书,用户告诉使用者项目的操作

    我把月亮戳到天上 天就是我的 我把脚踩入地里 地就是我的 我亲吻你 你就是我的
  • 相关阅读:
    linux进程cpu使用率过高分析与排查
    重启服务器后keepalived,vip找不到
    linux五种IO模型
    redis为什么单线程这么快?
    nginx为什么比apache快?
    redis高可用,主从,哨兵,集群
    git合并远端commit
    查看cpu和内存
    CommitLog文件和ConsumeQueue在文件系统中的映射
    hadoop集群启动
  • 原文地址:https://www.cnblogs.com/zhulipeng-1998/p/12863913.html
Copyright © 2020-2023  润新知