Python基础之模块和包

Python基础之模块和包

本节将介绍Python中的模块和包的概念及基本用法。


模块

简单来说模块就是一个python文件,我们可以将一些常量、函数、类等封装到一个模块中,然后在程序中使用该模块。模块类似Java中的包(package),目的是组织代码结构,重用代码等。

命名

模块的命名应该采用小驼峰方式,即只包含数字,字母和下划线等字符。其中,模块名应该只包含小写字母,且首字符不能是数字,单词与单词之间用下划线分割。因为在导入模块时模块名会作为程序的一部分,因此模块名必须按规范命名。

导入模块

  1. import 模块名
  2. import 模块名 as 别名
  3. import folder1.folder2...folderN.模块名 [as 别名]。注:当模块在某个目录中时按这种方式导入。
  4. from 模块名 import 函数/常量/类 [as 别名]。注:只从模块中导入一个函数、常量或类。
  5. from 模块名 import *。注:从模块中导入所有内容。

对于上面的第4和第5点,导入后的函数、常量、类等内容会直接进入到当前代码的符号列表中。好处是可以直接使用函数、常量和类而不需要指定模块名,缺点是可能有名字冲突。如果有名字冲突新导入的会覆盖开始导入的,可以使用as起一个别名以防止命名冲突。所以使用哪一种导入方式需要根据具体场景来决定。

模块查找顺序

总的来说按照这个顺序查找:当前路径  ./   ->  系统路径 .../Lib/...   -> 第三方路径  .../Lib/site-packages, 例如:

import sys

print(sys.path)

运行结果:

D:\work\python_workspace\python_study\basic_08>python module_search.py
['D:\\work\\python_workspace\\python_study\\basic_08', 'D:\\Program Files\\Pytho
n38\\python38.zip', 'D:\\Program Files\\Python38\\DLLs', 'D:\\Program Files\\Pyt
hon38\\lib', 'D:\\Program Files\\Python38', 'D:\\Program Files\\Python38\\lib\\s
ite-packages']

每个模块都应该独立开发,每一个模块都应该是可以被导入的,文件中所有没有缩进的代码在导入时都要被执行。

"__name__"代表模块名,被导入时输出模块名。在当前模块中执行时输出"__main__",一般用于模块的测试。例如:

if __name__ == "__main__":
    pass

包是一个包含多个模块的特殊文件,是模块的集合,类似Java中的jar。包中有一个特殊文件__init__.py,里面存放包的配置数据。包的命名和模块命名一样,都是小驼峰形式。

导入包

import 包名。可以导入包中所有模块。注意:需要在__init__.py中指定哪些模块会被导入,例如指定:from . import 模块

如何使用包?

包名.模块名.函数(类、全局变量等)

制作压缩包

制作压缩包的目的是让别人可以使用自己开发的包。

  1. 构建以下目录结构

    setup.py中存放的是编译相关的参数,fibonacci.py是包中的模块,可计算斐波拉契数列,__init__.py中存放的是包的配置,包含可以导出哪些模块。
  2. setup.py
    from distutils.core import setup
    
    setup(name='hello_package', version='1.0', description='This is a test hellp package',
          long_description='This is a test hellp package',
          author='WXH',
          author_email='wxhyzh2005@163.com', url='https://blog.csdn.net/funnyrand', py_modules=[
            'hello_package.fibonacci'])
    
  3. __init__.py
    from . import fibonacci
  4. 编译包
    在目录hello_package_root中执行两个命令:python setup.py buildpython setup.py sdist

    编译完成后的目录结构:

    可以看出生成了包文件:hello_package-1.0.tar.gz。我们可以把该文件发送给其他人使用。

使用压缩包

假设我们拿到了别人发给我们的包文件hello_package-1.0.tar.gz,按下面步骤使用,

  1. 解压,命令 tar -zxvf 文件名。注:Linux上使用此命令,windows上直接解压即可。
  2. 安装包,在解压后的目录中执行命令:python setup.py install
  3. 使用新安装的包
  4. 卸载安装包
    到安装目录,把相应的包目录删除即可,一般有两个目录:包目录包名-<verion>.egg-info

    删除后再导入该包就会报错,

使用pip管理包

如果每次需要某个包的时候都自己去下载然后再安装,这将非常繁琐和复杂,且无法解决包的依赖问题。可以使用pip命令来安装和卸载包。windows上可以在这里下载pip:https://pypi.python.org/pypi/pip#downloads。Ubuntu上可通过命令安装:sudo apt-get install python3-pip

使用pip安装某个包:pip3 install xxx
使用pip卸载某个包:pip3 uninstall xxx

关于pip的更多细节可以参考:https://www.runoob.com/w3cnote/python-pip-install-usage.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值