老男孩教育专注IT教育10余年,只培养IT技术精英

全国免费咨询电话(渠道合作):400-609-2893

Python中什么是包?导入包的本质及语法!

老男孩IT教育

技术博客

2021年6月16日 17:39

学习Python的时候,相信大家都听说过“包”这个字。那么什么是包?导入包语法是什么?本文为大家详细讲解一下,希望对你们有所帮助。

  学习Python的时候,相信大家都听说过“包”这个字。那么什么是包?导入包语法是什么?本文为大家详细讲解一下,希望对你们有所帮助。

Python培训班

  什么是包?

  当一个项目中模块越来越多,维护和开发不是那么高效的时候,我们可以引入一种比模块更高级语法:包。

  包是对相关功能的模块py文件)的组织方式。

  包可以理解为文件夹,更确切的说,是一个包含__init__文件的文件夹。

  导入包语法

  import 包名[.模块名 [as 别名]]

  from 包名 import 模块名 [as 别名]

  from 包名.模块名 import 成员名 [as 别名]

  案例:将上面案例中的cal .py文件放到utils包中管理,logger.py放到logger包中管理。

-- demo
   main.py
   -- utils
      cal.py
   -- logger
      logger.py
# 方式1
from utils import cal
ret = cal.add(2,5)
print(ret)


# 方式2
import utils.cal
ret = utils.cal.add(4,6)
print(ret)

# 方式3
from utils.cal import add
ret = add(3,5)
print(ret)

  导入包的本质

  如果将main.py放在一个main包下,运行会报错。根本原因是无论导包还是调用模块都是解释器依赖sys.path的路径进行查找,而python解释器运行某个程序时会将该程序的启动文件的目录加入到sysy.path中.所以启动文件的同级目录或者文件才可以调用。

  所以这种目录结构下需要构建模块路径:

import sys,os
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)

  思考:

  1、如何在cal.py中导入同级目录模块?

  2、导入模块的执行顺序?

  __init__文件

  __init__.py该文件的作用就是相当于把自身整个文件夹当作一个包来管理,每当有外部导入的时候会自动执行里面的代码。

  主要功能:

  1.标识该目录是一个python的模块包(module package)

  2.简化模块导入操作

  3.控制模块导入

  4.偷懒的导入方法

  __all__ 关联了一个模块列表,当执行 from xx import * 时,就会导入列表中的模块。

  5.配置模块的初始化操作

  在了解了__init__.py的工作原理后,应该能理解该文件就是一个正常的python代码文件,因此可以将初始化代码放入该文件中。

  老男孩Python课程涉及哪些内容?主要包括Python开发基础、Python高级编程&数据库开发、前端开发、Web框架开发、爬虫开发、全栈项目实战、数据分析、人工智能、自动化运维&开发等。

  推荐阅读:

  小白如何入门Python爬虫?Python学习教程

  python分支语句有哪些?老男孩Python课程如何?

  网络安全防御体系分为几种?老男孩网络安全学多久?

本文经授权发布,不代表老男孩教育立场。如若转载请联系原作者。