Python 基础语法 06 包 模块

模块

概述

模块是Python中一个包含Python代码的文件,通常以.py为扩展名。模块可以包含函数、类和变量,也可以包含可执行的代码。模块的主要作用是组织和封装代码,以便于重用和维护。

导入模块的5种方式

  1. import 模块名
    • 导入模块下所有的功能(函数、类等),但必须通过模块名.功能名()的方式来调用。
  2. import 模块名 as 别名
    • 导入模块下所有内容,并为模块指定一个别名,通过别名.功能名()的方式调用。
  3. from 模块名 import 功能名
    • 导入模块中的指定功能,之后可以直接通过功能名()的方式调用。
  4. from 模块名 import 功能名 as 别名
    • 导入模块中的指定功能,并为该功能指定一个别名,之后通过别名()的方式调用。
  5. from 模块名 import *
    • 导入模块中所有的公共功能(即不以单下划线_开头的名称),之后可以直接通过功能名调用。但这种方式通常不推荐,因为它可能导致命名冲突。

使用自定义模块

概述

自定义模块就是你自己编写的.py文件,其中包含了类、变量、函数等。

导包方式

与导入标准库模块或第三方库模块的方式相同,可以使用上述的五种方式之一。

细节

  1. 命名冲突:如果同时导入了两个模块,且它们有重名的功能,则后导入的功能会覆盖先导入的功能(在相同的命名空间中)。

  2. __name__属性

    • 特点
      • 在当前模块中打印__name__时,其值为'__main__',表示该模块是被直接运行的。
      • 在其他模块中导入该模块时,__name__的值为被导入的模块名。
    • 应用场景:常用于编写即可作为脚本直接运行,又可被其他模块导入的代码。通过检查__name__的值,可以决定是否执行某些只在模块被直接运行时才应该执行的代码。
  3. __all__属性

    • 特点
      • 只对from 模块名 import *这种导入方式有效。
      • 如果不设置__all__,则默认导入模块中定义的所有公共名称(即不以单下划线_开头的名称)。
      • 如果设置了__all__,则只导入__all__列表中指定的名称。
    • 应用场景:当模块中包含大量功能,但通常只需要导入其中一部分时,可以使用__all__来限制导入的内容。

概述

包(Package)是一个包含__init__.py文件的目录(在Python 3.3及以后的版本中,空的__init__.py文件不再是必需的,但保留它可以提高兼容性)。包可以包含模块和子包,用于组织和封装相关的模块。

关系

包 > 模块 > 类、变量、函数

细节

  1. 大白话翻译:包 = 文件夹 + __init__.py(尽管在Python 3.3及以后版本,__init__.py可以省略)。

  2. 组织模块:可以将功能相似的模块(例如,都是操作文件系统的,或者都是进行数学计算的)放在同一个包中,以便于集中管理和维护。

  3. 包的导入

    • 包的本质可以看作是特殊的模块,也可以像模块一样被导入和使用。
    • 导入包时,Python会在指定的目录(如当前目录、PYTHONPATH环境变量指定的目录等)中查找包含__init__.py的目录。

导包的两种方式

  1. import 包名.模块名
    • 导入包下的某个模块,之后需要通过包名.模块名.功能名()的方式来调用该模块中的功能。
  2. from 包名 import 模块名
    • 导入包下的指定模块,之后可以直接通过模块名.功能名()的方式来调用该模块中的功能。

__init__.py中的__all__属性

  • 默认:如果不设置__all__,则from 包名 import *不会导入包中的任何内容(除了__init__.py中明确定义的)。

  • 指定:在__init__.py中设置__all__,可以指定from 包名 import *时应该导入哪些模块或子包。这对于控制包的导出内容非常有用,可以避免不必要的导入和潜在的命名冲突。

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值