• Python 编程基础 | 第六章-包与模块管理 | 1、包与模块简介


    一、模块

    在程序开发过程中,文件代码越来越长,维护越来越不容易。可以把很多不同的功能编写成函数,放到不同的文件里,方便管理和调用。在Python中,一个.py文件就称之为一个模块(Module)。

    1、简介

    模块是一个包含所有你定义的函数和变量的文件,以.py后缀结尾。模块可以被别的程序引入和使用其中的函数功能。下面是一个使用 Python 标准库中模块的例子,如下:

    import sys
    print('命令行参数如下:')
    for i in sys.argv:
       print(i)
    print('Python 路径为:', sys.path)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    module来源有三种,如下:

    • Python内置模块(标准库)
    • 第三方模块
    • 自定义模块

    2、import语句

    想使用Python模块,只需在另一个源文件里执行import语句,语法如下:

    import module1[, module2[,... moduleN]
    
    • 1

    当解释器遇到 import 语句,如果在当前的搜索路径中能搜索到模块,就会直接导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 showmeai,需要把命令放在脚本的顶端:

    fibo.py 文件(D:\Python_Project\example\day01)

    # 定义到 n 的斐波那契数列
    def fib(n):
        a, b = 0, 1
        while b < n:
            print(b, end=' ')
            a, b = b, a+b
        print()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    demo.py 文件(D:\Python_Project\example\day01)

    import fibo
    fibo.fib(10)
    
    • 1
    • 2

    当使用import语句的时候,Python解释器会在搜索路径中寻找对应模块,搜索路径是由一系列目录名组成的,它是在Python编译或安装的时候确定的,安装新的库应该也会修改,搜索路径被存储在sys模块中的path变量。

    3、from … import 语句

    Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中,语法如下:

    from modname import name1[, name2[, ... nameN]]
    
    • 1

    要导入模块 fibo 的 fib 函数,使用如下语句:

    from fibo import fib
    
    fib(10)
    
    • 1
    • 2
    • 3

    这个声明不会把整个fibo模块导入到当前的命名空间中,它只会将fibo里的fib函数引入进来。

    4、from … import * 语句

    把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:

    from modname import *
    
    • 1

    要导入模块 fibo 的所有函数,使用如下语句:

    from fibo import *
    
    fib(10)
    
    • 1
    • 2
    • 3

    5、标准模块

    Python本身带着一些标准的模块库,有些模块直接被构建在解析器里,能很高效的使用。比如模块sys,它内置在每一个Python解析器中,例如:

    import sys
    
    print(sys.path)
    
    • 1
    • 2
    • 3

    二、包

    包是一种管理Python模块命名空间的形式,经常会以「包.模块」的形式来导入模块,例如:一个模块的名称是C.D, 那么表示一个包C中的子模块D。使用这种形式不用担心不同库之间的模块重名的情况,Python包结构如下:

    在这里插入图片描述

    在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。目录只有包含一个叫做__init__.py的文件才会被认作是一个包。最简单的处理是放一个空的__init__.py文件,用户可以每次只导入一个包里面的特定模块。

  • 相关阅读:
    计算机网络 了解网络通信
    JWT 详解,当前主流java token 框架之一
    做得好 vs 做得快?
    Java8Stream 流的使用
    【2022黑马程序员】SQL优化
    计算机毕业设计ssm校园疫情防控系统jt87q系统+程序+源码+lw+远程部署
    沃趣QFusion数据库管理平台-权限管理
    深度学习入门(四十二)计算机视觉——目标检测和边界框
    电容笔和Apple pencil有啥区别?电容笔四大口碑比较好的品牌推荐
    驱动开发,IO模型,信号驱动IO实现过程
  • 原文地址:https://blog.csdn.net/cloud323/article/details/133916017