zoukankan      html  css  js  c++  java
  • 函数补充与模块

    内置函数补充:

    map:映射

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

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

    需要注意的是只能转一次(原因是取一次后生成器就被取完了)

    #map 映射
    name_list = ['egon', 'jason', 'sean', '大饼', 'tank']
    map_obj = map(lambda x:x+'_dsb' if x != 'tank' else x+'喜欢吃生蚝', name_list)
    print(map_obj)          #map_obj可以变成list/tuple类型
    print(list(map_obj))    #map_obj---->生成器(迭代器)----》用完后,不能再取了
    print(tuple(map_obj))

    reduce:合并

     在使用时首先需要调用reduce模块

    from functools import reduce

    每次从可迭代对象中获取两个值进行合并,执行reduce函数都是从初始值开始合并

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

    #reduce 合并
    
    from functools import reduce
    print(reduce(lambda x, y: x+y, range(1, 101), 0))
    
    结果:
    5050

    filter:过滤

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

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

    xx_dsb.endswith('_dsb'):返回True or  False

    #filter 过滤
    name_list = ['egn_dsb', 'jason_dsb', 'sean_dsb', '大饼_dsb', 'tank']
    filter_obj = filter(lambda name: name.endswith('_dsb'), name_list)
    print(filter_obj)
    print(list(filter_obj))
    print(tuple(filter_obj))      #空元组,已经被上面列表取完了

    函数递归(了解):

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

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

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

    了解:
    Python中递归默认深度:998,1000(限制递归次数)

    但是在每一台操作系统中都会根据硬盘来设置默认的递归深度

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

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

    设置递归深度:print(sys.setresursionlimit(2000))(深度值)

    #查看当前递归深度值

    注:单独的递归调用时没有任何意义的

    想要递归有意义,必须要遵守两个条件:

    -回溯:

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

    -递推:

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

    age5 =age4 + 2        
    age4 = age3 + 2
    age3 = age2 +2
    age2 = age1 +2
    age1 =18  #回溯终止的结果
    #result = age(n-1)+2

    从上往下是回溯过程,从下往上是递推过程

    def age(n):
         if n ==1:
              return 18
        return age(n-1)+2  #必须要写return才能实现递推
    age()

    模块

    什么是模块?

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

    模块本质上是一个个的py文件#相当于模块包着一堆函数与代码

    模块的来源:

    1、Python内置的模块(Python解释器的)

    比如:sys/time/os/tutle

    2、第三方模块(别人写的)

    比如:request

    3、自定义的模块(自己写的)

    比如:自己定义的demo.py文件

    模块的表现形式:
    1、使用Python编写的py文件(了解)

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

    3、包下面带有_lnit_.py的一组py文件

    -py_demo

    -_init_.py

    -demo.py

    -demo2.py

    什么是包?

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

    Python解释器下的py文件:

    1)Python解释器下的文件夹

    2)一个个的py文件

    二 为什么要使用模块?
    模块可以帮我们更好地管理功能代码,比如: 函数...
    可以将项目拆分成一个个的功能,分别存放在不同的py文件(模块)中。


    三 如何创建,编写模块,并使用模块?
    - 鼠标右键创建py文件
    - 在py文件编写python代码

    - 在一个文件中,通过import关键字导入模块
    import 模块名
    # 注意: import 模块时,模块不能加.py后缀

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

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

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

    - 给模块起别名 as
    import 模块 as 模块的别名

    - 模块的导入方式
    - import 模块
    - 在执行文件中直接import导入

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

    - 循环导入问题:

    - model1.py
    from model2 import name
    name = 'jason'
    
    - model2.py
    from model1 import name
    name = 'tank'

    - 解决循环导入问题:
    1.需要查找的名字放在导入模块的上方
    2.在函数内部导入,将模块变成函数名称空间中的名字

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


    - 项目的文件夹
    - conf:
    - 用于存放配置文件的文件夹
    - core:
    - 核心业务代码 .py
    - interface:
    - 接口, 接口内写获取数据前的逻辑代码,通过后才能获取数据
    - db:
    - 用于存放文件数据
    - lib:
    - 存放公共功能文件

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

    - bin:
    - 里面存放启动文件 / - 启动文件

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

  • 相关阅读:
    IOS-button属性edge
    IOS-简单WebView的使用
    IOS-绘制饼图等多种图形
    IOS-Prefix.pch 文件不起作用
    IOS-根据ip获取当前城市的编号
    在iis中调试asp.net程序
    asp.net跨域上传文件
    用jQuery的ajax请求一般处理程序返回json数据
    SQLServer分页
    Visual Studio发布项目到远程服务器的步骤
  • 原文地址:https://www.cnblogs.com/xy-han/p/11867236.html
Copyright © 2011-2022 走看看