zoukankan      html  css  js  c++  java
  • 内置函数+递归+模块使用

    内置函数

    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:项目说明书,用户告诉使用者项目的操作

    我把月亮戳到天上 天就是我的 我把脚踩入地里 地就是我的 我亲吻你 你就是我的
  • 相关阅读:
    XAF 有条件的对象访问权限
    XAF 顯示 UnInplace Report(設置自定義條件顯示報表,不是根據選擇ListView記錄條件顯示報表)
    XAF 如何自定义PivotGrid单元格显示文本?
    XAF 如何布局详细视图上的按钮
    XAF How to set size of a popup detail view
    XAF Delta Replication Module for Devexpress eXpressApp Framework
    XAF 帮助文档翻译 EasyTest Basics(基础)
    XAF 用户双击ListView记录时禁止显示DetailView
    XAF How to enable LayoutView mode in the GridControl in List Views
    XAF 如何实现ListView单元格批量更改?
  • 原文地址:https://www.cnblogs.com/zhulipeng-1998/p/12863913.html
Copyright © 2011-2022 走看看