Python包

        基于Python模块,我们可以在编写代码的时候,导入许多外部代码来丰富功能。
但是,如果Python的模块太多了,就可能造成一定的混乱,那么如何管理呢?
        通过Python包的功能来管理。

什么是Python包

        从物理上看,包就是一个文件夹,在该文件夹下包含了一个  _init_.py 文件,该文件夹可用于包含多个模块文件。

        从逻辑上看,包的本质依然是模块

Python包_第1张图片

包的作用:

        当我们的模块文件越来越多时,可以帮助我们管理这些模块,包的作用就是包含多个模块,但包的本质依然是模块

快速入门

步骤如下:1. 什么是Python的包? 包就是一个文件夹,里面可以存放许多Python的模块(代码文件),通过包,在逻辑上将一批模块归为一类,方便使用。 2. __init__.py文件的作用? 创建包会默认自动创建的文件,通过这个文件来表示一个文件夹是Python的包,而非普通的文件夹。 3. __all__变量的作用? 同模块中学习到的是一个作用,控制 import * 能够导入的内容

  • 新建包my_package
  • 新建包内模块: my_modulel 和 my_module2
  • 模块内代码如下

Python包_第2张图片

 Pycharm中的基本步骤:

[New]   -   [Python Package]  - 输入包名  -  [OK]   -  新建功能模块(有联系的模块)

注意:新建包后,包内部会自动创建`__init__.py`文件,这个文件控制着包的导入行为

导入包

方式一:

import 包名.模块名

包名.模块名.目标

方式二:

from 包名 import 模块名

模块名.目标

方式三:

from 包名.模块名 import 目标

目标

 控制__all__变量,控制import *

通过控制__init__.py 文件中的  __all__ = ['my_module1']  变量

控制导入的模块

注意:  

          __all__针对的是 ’ from ... import * ‘ 这种方式 对 ‘ import xxx ’ 这种方式无效

总结:

 1. 什么是Python的包?

        包就是一个文件夹,里面可以存放许多Python的模块(代码文件),通过包,在逻辑上将一批模块归为一类,方便使用。

2. __init__.py文件的作用?

        创建包会默认自动创建的文件,通过这个文件来表示一个文件夹是Python的包,而非普通的文件夹。

3. __all__变量的作用?

         同模块中学习到的是一个作用,控制 import * 能够导入的内容

什么是第三方包

        我们知道,包可以包含一堆的Python模块,而每个模块又内含许多的功能。 所以,我们可以认为:一个包,就是一堆同类型功能的集合体。

        在Python程序的生态中,有许多非常多的第三方包(非Python官方),可以极大的帮助我们提高开发效率,如:

  • 科学计算中常用的:numpy包
  • 数据分析中常用的:pandas包
  • 大数据计算中常用的:pyspark、apache-flink包
  • 图形可视化常用的:matplotlib、pyecharts
  • 人工智能常用的:tensorflow 等

        这些第三方的包,极大的丰富了Python的生态,提高了开发效率。 但是由于是第三方,所以Python没有内置,所以我们需要安装它们才可以导入使用哦。

安装第三方包 - pip

        第三方包的安装非常简单,我们只需要使用Python内置的pip程序即可。

打开我们许久未见的:命令提示符程序,在里面输入:

pip install 包名称

即可通过网络快速安装第三方包

Python包_第3张图片

 pip的网络优化

        由于pip是连接的国外的网站进行包的下载,所以有的时候会速度很慢。

我们可以通过如下命令,让其连接国内的网站进行包的安装:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称Python包_第4张图片

 https://pypi.tuna.tsinghua.edu.cn/simple 是清华大学提供的一个网站,可供pip程序下载第三方包

 安装第三方包 - PyCharm

 PyCharm也提供了安装第三方包的功能:Python包_第5张图片Python包_第6张图片Python包_第7张图片

 总结:

 1. 什么是第三方包?有什么作用?

第三方包就是非Python官方内置的包,可以安装它们扩展功能,提高开发效率。

2. 如何安装?

  • 在命令提示符内:
    • pip install 包名称
    • pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称
  • 在PyCharm中安装

 练习:

练习案例:自定义工具包

创建一个自定义包,名称为:my_utils  (我的工具)

在包内提供2个模块

  • str_util.py (字符串相关工具,内含:)
    • 函数:str_reverse(s),接受传入字符串,将字符串反转返回
    • 函数:sub_str(s, x, y),按照下标x和y,对字符串进行切片
  • file_util.py(文件处理相关工具,内含:)
    • 函数:print_file_info(file_name),接收传入文件的路径,打印文件的全部内容,如文件不存在则捕获异常,输出提示信息,通过finally关闭文件对象
    • 函数:append_to_file(file_name, data),接收文件路径以及传入数据,将数据追加写入到文件中

构建出包后,尝试着用一用自己编写的工具包。

 file_util.py:

"""
file_util.py(文件处理相关工具,内含:)
    函数:print_file_info(file_name),接收传入文件的路径,打印文件的全部内容,
        如文件不存在则捕获异常,输出提示信息,通过finally关闭文件对象
    函数:append_to_file(file_name, data),接收文件路径以及传入数据,将数据追加写入到文件中
"""


def print_file_info(file_name):
    """
    功能是:将给定路径的文件内容输出到控制台
    :param file_name: 即将读取的文件路径
    :return: None
    """
    f = None
    try:
        f = open(file_name, 'r', encoding='UTF-8')
        content = f.read()
        print(f"文件的全部内容是:\n{content}")
    except Exception as e:
        print(f"程序出现异常了,原因是:{e}")
    finally:
        if f:  # 如果变量是None,表示False,如果有任何内容,就是True
            f.close()


def append_to_file(file_name, data):
    """
    功能:将数据追加写入到文件中
    :param file_name: 指定的文件路径
    :param data:指定的数据
    :return:None
    """
    f = open(file_name, 'a', encoding='UTF-8')
    f.write(data)
    f.write("\n")
    f.close()


if __name__ == '__main__':
    print_file_info('D:/test1.txt')
    append_to_file('D:/test11.txt', '黑马程序员')

 str_util.py

"""
str_util.py (字符串相关工具,内含:)
    函数:str_reverse(s),接受传入字符串,将字符串反转返回
    函数:sub_str(s, x, y),按照下标x和y,对字符串进行切片

"""


def str_reverse(s):
    """
    见字符串进行反转
    :param s: 将要反转的字符串
    :return:  反转后的字符串
    """
    return s[::-1]


def sub_str(s, x, y):
    """
    按 x 和 y 下标将字符串进行切片
    :param s: 将要切片的字符串
    :param x: 开始的下标X
    :param y: 结束的下标y
    :return: 得到的字符串
    """
    return s[x:y]


if __name__ == '__main__':
    print(str_reverse("abcdefghi"))
    print(sub_str("abcdefghi", 0, 8))

 

你可能感兴趣的:(Python,python,开发语言,windows)