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文件两个用途

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

        二:可以被当作模块导入

  • 相关阅读:
    LeetCode 264. Ugly Number II
    LeetCode 231. Power of Two
    LeetCode 263. Ugly Number
    LeetCode 136. Single Number
    LeetCode 69. Sqrt(x)
    LeetCode 66. Plus One
    LeetCode 70. Climbing Stairs
    LeetCode 628. Maximum Product of Three Numbers
    Leetcode 13. Roman to Integer
    大二暑假周进度报告03
  • 原文地址:https://www.cnblogs.com/Marcki/p/10111959.html
Copyright © 2011-2022 走看看