zoukankan      html  css  js  c++  java
  • 函数递归&模块与包

    函数递归

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

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

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

    python中的递归深度即限制递归次数:998

    PS:每一台操作系统中都会根据硬盘来设置默认递归深度。

    查看当前递归深度:sys.getrecursionlimit()

    import sys
    print(sys.getrecursionlimit()) #查看当前承受的递归深度
    sys.setrecursionlimit(2000)#更改递归深度为2000

    单纯的递归调用没有任何意义,想要递归有意义,必须遵循两个条件

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

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

    最低的人18岁,第一个人依后多两岁求第五个人的年龄
    def age(n):
       if n == 1:
           return 18
       return age(n-1)+2
    res = age(5)
    print(res)

    模块与包

    模块是一系列功能的集合体,本质是一个个的py文件

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

    包的作用:存放模块,包可以更好的管理模块

    模块来源:

    1.python内置的模块(python解释器的)如:sys/time/os/turtle

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

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

    模块的表现形式:

    1.使用python编写的py文件

    2.编译后的共享库DLL或者是C或者C++库。

    3.包下面带有__init__.py的一组py文件。

    4.python解释器下的文件

    为什么要使用模块?

    模块可以帮我们更好的管理功能代码

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

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

    如何创建,编写并使用模块:

    鼠标右键创建一个py文件

    在文件里编写python代码

    在一个文件里通过import关键字导入模块

    import 模块名(注意导入模块时,模块不能加.py后缀)

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

    模块在导入时发生的事:

    1.首先执行当前文件,并产生执行文件中的名称空间。

    2.当执行到导入模块的代码时,被导入的模块会产生一个模块的名称空间。

    3.将被导入模块的名称空间加载到内存中

    模块的导入方式

    1.import 模块 在执行文件中直接import导入

    2.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:

          • 项目说明书, 用户告诉使用者项目的操作

  • 相关阅读:
    ES6对象展开运算符
    Vue中keep-alive的深入理解和使用
    彻底明白VUE修饰符sync
    函数去抖和函数节流
    vue cli4.0 配置环境变量
    什么是process.env?
    new Function和with
    inline-block元素没有对齐的解决方案及总结
    【译文】为什么你的浏览器会限制并发网络调用的数量?
    高德地图Marker缩放位置变化
  • 原文地址:https://www.cnblogs.com/cyfdtz/p/11892273.html
Copyright © 2011-2022 走看看