zoukankan      html  css  js  c++  java
  • python模块使用,improt导入模块介绍,面向过程编程

    1.面向过程编程

        主要是核心过程二字,过程指的是解决问题的步骤,即先干什么,在干什么,然后在干什么

        基于该思想编写程序就好比在设计一条流水线,是一种机械式的思维方式

    优点:

            复杂的问题流程化,进而简单化

    缺点:

        扩展性极差(修改一个值,有可能需要改动很多东西)

    编写程序主要划分三层步骤流程:    

            1.用户功能层

           2.接口层

           3. 数据处理层

    2.模块的使用

        1、什么是模块
        模块是一系列功能的集合体
        常见的模块形式(自定义模块、第三方模块、内置模块):
            1、一个module.py文件就是一个模块,文件名是module.py,而模块名是module
            2、一个包含有__init__.py文件的文件夹也是模块
            3、已被编译为共享库或DLL的C或C++扩展
            4、使用C编写并链接到python解释器的内置模块

    2、为什么要用模块
        1、用第三方或者内置的模块是一种拿来主义,可以极大地提升开发效率
        2、自定义模块即将我们自己程序中需要用到的公共的功能写入一个python文件
            然后程序的各部分组件可以通过导入的方式来引用/重用自定义模块中的功能

    # 首导入模块发生了3件事
    #1、以模块为准创造一个模块的名称空间
    #2、执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
    #3、在当前执行文件中拿到一个模块名
    之后的重复导入会直接引用之前创造好的结果,不会重复执行模块的文件


    3、如何用模块
        导入的方式有两种
        import 模块名

        from 模块名 import 具体的功能

        格式:

        # import spam #spam=spam=模块名称空间的内存地址

        # from .... import ... 

        # 优点:不用加前缀,代码更为精简
        # 缺点:容易与当前执行文件中名称空间中的名字冲突

    # 相同点:

    # 1、都会执行模块对应的文件,都会产生模块的名称空间
    # 2、调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关
    # 不同点
    # 1、一种需要加前缀,一种不需要加前缀

    循环导入模块解决方法:

        

    # 解决方法:
    方法一:导入语句放到最后
    #m1.py
    print('正在导入m1')
    
    x='m1'
    
    from m2 import y
    
    #m2.py
    print('正在导入m2')
    y='m2'
    
    from m1 import x
    
    方法二:导入语句放到函数中
    #m1.py
    print('正在导入m1')
    
    def f1():
        from m2 import y
        print(x,y)
    
    x = 'm1'
    
    # f1()
    
    #m2.py
    print('正在导入m2')
    
    def f2():
        from m1 import x
        print(x,y)
    
    y = 'm2'
    
    #run.py
    import m1
    
    m1.f1()

    3.导入模块的查找顺序

        一个py文件就是一个模块,在导入时必须从某一个文件夹下找到该py文件
        模块的搜索路径指的就是在导入模块时需要检索的文件夹


        导入模块时查找模块的顺序是:
        1、先从内存中已经导入的模块中寻找
        2、内置的模块
        3、环境变量sys.path中找
            强调:sys.path的第一个值是当前执行文件的所在的文件夹

    5.python文件两个用途

        一:可以被当作脚本去执行

        二:可以被当作模块导入

  • 相关阅读:
    运动员排成绩————————对多个数组进行排序
    关于指针 用字符数组,字符指针变量输入字符串 动态为字符型指针变量分配内存
    axel 原来求中点我想复杂了 两个结果一样
    Bezier曲线绘制 B样条绘制
    最大的回文子串
    字符数组
    按位与、或、异或等运算方法
    uniapp mixin 使用
    vue mixin执行覆盖
    windows10 安装NASM
  • 原文地址:https://www.cnblogs.com/Marcki/p/10111959.html
Copyright © 2011-2022 走看看