• day14内置函数,函数递归,模块


    内置函数

    map :映射

    ​ map(函数地址, 可迭代对象) ---> map对象

    map会将可迭代对象中的每一个值进行修改,然后映射一个map对象中,

    可以再将map对象转换成列表/元组。

    注意: 只能转一次。

    name_list = ['egon', 'sean', 'tank']
    name_obj = map(lambda name: name + '吃生蚝' if name == 'tank' else name + 'good', name_list)
    print(name_obj)
    print(list(name_obj))
    print(tuple(name_obj))
    
    <map object at 0x0000022712B39F48>
    ['egongood', 'seangood', 'tank吃生蚝']
    

    reduce : 合并

    ​ reduce(函数地址, 可迭代对象, 默认为0)

    ​ reduce(函数地址, 可迭代对象, 初始值)

    # 需求: 求1——100的和
    from functools import reduce
    num = reduce(lambda x, y: x + y, range(1, 101), 0)
    print(num)
    

    filter: 过滤

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

    # 将后缀为_dsb的名字 “过滤出来”
    # filter会将函数中返回的结果为True 对应 的参数值 “过滤出来”
    # 过滤出来的值会添加到 filter对象中
    name_list = ['egon_dsb', 'jason_dsb', 'sean_dsb', '大饼_dsb', 'tank']
    filter_obj = filter(lambda name: name.endswith('_dsb'), name_list)
    print(filter_obj)
    print(list(filter_obj))
    
    <filter object at 0x000002F37A9F9F08>
    ['egon_dsb', 'jason_dsb', 'sean_dsb', '大饼_dsb']
    

    函数递归

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

    • 直接调用: 指的是在函数内置,直接调用函数本身。

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

      获取递归深度: (了解)

      ​ sys.getrecursionlimit()

      设置递归深度: (了解)

      ​ sys.setrecursionlimit(深度值)

    import sys
    print(sys.getrecursionlimit())
    sys.setrecursionlimit(2000)
    print(sys.getrecursionlimit())
    
    想要递归有意义,必须遵循两个条件:
    • 回溯:
    • ​ 指的是重复地执行, 每一次执行都要拿到一个更接近于结果的结果, 回溯必要有一个终止条件。
    • 递推:
    • ​ 当回溯找到一个终止条件后,开始一步一步往上递推。
    注意: 单纯的递归调用时没有任何意义的。

    def age(n):
        if n == 1:
            return 18
        return age(n-1) + 2
    res = age(5)
    print(res)   #26
    

    模块:

    什么是包?

    ​ 包指的是内部包含__init__.py的文件夹。

    包的作用:

    ​ 存放模块,包可以更好的管理模块。

    一 什么是模块?

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

    ​ (相当于与模块包着一堆函数与代码。)

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

    模块的三种来源:

    • 1.python内置的模块: (python解释器的) 比如: sys imeos urtle

    • 2.第三方的模块: (别人写的) 比如: requests

    • 3.自定义的模块: (自己写的) 比如: 自己定义的demo.py文件

    模块的四种表现形式:

    • 1.使用python编写的py文件。(了解)

    • 2.编译后的共享库DLL或者是C或者C++库。(了解)

    • 3.包下面带有__ init __.py 的一组 py 文件。

    • 4.python解释器下的py文件。

    为什么要使用模块

    ​ 模块可以帮我们更好地管理功能代码,比如: 函数...

    ​ 可以将项目拆分成一个个的功能,分别存放在不同的py文件(模块)中。

    如何创建,编写模块,并使用模块?
    • 鼠标右键创建py文件
      • 在py文件编写python代码- 在一个文件中,通过import关键字导入模块 import 模块名 # 注意: import 模块时,模块不能加.py后缀

    在使用模块阶段,必须要注意,谁是执行文件,谁是被导入文件(被导入的模块)

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

    模块在导入时发生的事情:

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

    模块的导入方式

    • import 模块

      • 在执行文件中直接import导入
    • from 包/模块 import 模块/(函数名、变量名、类名)

      • 在执行文件中直接import导入
    • 解决循环导入问题:

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

    软件开发目录规范:

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

    项目的文件夹
    • conf: - 用于存放配置文件的文件夹
    • core: - 核心业务代码 .py
    • interface: - 接口, 接口内写获取数据前的逻辑代码,通过后才能获取数据
    • db: - 用于存放文件数据
    • lib: - 存放公共功能文件 -
    • log: - 用于存放日志文件,日志用于记录用户的操作记录
    • bin: - 里面存放启动文件 / - 启动文件
    • readme.txt: - 项目说明书, 用户告诉使用者项目的操作
  • 相关阅读:
    openlayers5之ol.proj坐标转换
    bootstrap模态框可拖动 --------------------- 本文来自 gisdoer 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/gisdoer/article/details/82838312?utm_source=copy
    bootstrap模态框可拖动
    leaflet实用插件整理
    面试题经常问的闭包问题
    撩课-Java每天5道面试题第15天
    撩课-Web大前端每天5道面试题-Day4
    撩课-Python-每天5道面试题-第4天
    撩课-Java每天5道面试题第14天
    撩课-Web大前端每天5道面试题-Day3
  • 原文地址:https://www.cnblogs.com/lishuangjian/p/11867745.html
Copyright © 2020-2023  润新知