首页 > 编程语言 >Python 基础语法 06 包 模块

Python 基础语法 06 包 模块

时间:2024-09-13 12:22:53浏览次数:9  
标签:__ 功能 06 Python py 导入 模块 import

模块

概述

模块是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 *时应该导入哪些模块或子包。这对于控制包的导出内容非常有用,可以避免不必要的导入和潜在的命名冲突。

标签:__,功能,06,Python,py,导入,模块,import
From: https://blog.csdn.net/DREAM_xs/article/details/142133938

相关文章

  • 使用 Nuxt Kit 检查模块与 Nuxt 版本兼容性
    title:使用NuxtKit检查模块与Nuxt版本兼容性date:2024/9/13updated:2024/9/13author:cmdragonexcerpt:通过NuxtKit提供的兼容性检查工具,您可以轻松地确保您的模块与不同版本的Nuxt兼容。这将有助于您在开发过程中避免潜在的兼容性问题,从而提升您的开发效率......
  • 振弦采集测量模块在应力应变、仪器仪表和自动化信息化领域的广泛应用
    专业化的自动化解决方案VM5XX系列振弦采集测量模块在应力应变、仪器仪表和自动化信息化领域的广泛应用VM501系列模块是一款专业化的读数模块,采用了单振弦式传感器激励、频率读取和温度转换技术。该模块具有集成度高、体积小、精度高和适应能力强等优点,能够极大地简化外围电路设计......
  • 快速编写一款python漏洞批量检测工具
    一、前言以下列检测脚本示列:importrequestsimporturllib3importre,string,randomfromurllib.parseimporturljoinimportargparseimporttimeimportsslssl._create_default_https_context=ssl._create_unverified_contexturllib3.disable_warnings(ur......
  • 让ESP32-C3系列的卓越表现助力智能生活:四博智联全新推出的ESPC3-20E模块
    让ESP32-C3系列的卓越表现助力智能生活:四博智联全新推出的ESPC3-20E模块在智能生活和物联网领域,稳定的无线连接和低功耗设计已经成为推动技术发展的关键。作为行业领先的企业,四博智联凭借创新的产品设计,推出了全新的ESPC3-20EWi-Fi和蓝牙5.0双模模块。该模块结合了高性能......
  • Python容器二之列表
    文章目录1.列表的基本使用1.1列表的定义1.2实例11.3访问列表元素和长度1.4实例22.列表的遍历2.1使用for遍历列表2.2使用while遍历列表3.操作列表3.1添加元素3.2删除元素3.3修改元素3.4查找元素3.5排序操作1.列表的基本使用1.1列表的定义列表类型......
  • KAN专家混合模型在高性能时间序列预测中的应用:RMoK模型架构探析与Python代码实验
    Kolmogorov-Arnold网络(KAN)的提出为深度学习领域带来了重要突破,它作为多层感知器(MLP)的一种替代方案,展现了新的可能性。MLP作为众多深度学习模型的基础构件,包括目前最先进的预测方法如N-BEATS、NHiTS和TSMixer,已经在各个领域得到广泛应用。但是我们在使用KAN、MLP、NHiTS和NBEATS进......
  • python 生成器
    一、可迭代对象、迭代器、生成器的区别可迭代对象:只要实现__iter__方法或者实现__getitem__方法而且其参数从0开始索引,那么该对象就是可迭代对象。可以用for循环遍历,常见的有string,list,tuple,dict,set。迭代器:实现了__iter__方法和__next__方法的对象。__iter......
  • Python文件操作:上下文管理器(with语句)②
    文章目录1.上下文管理器概述1.1什么是上下文管理器?1.2为什么使用上下文管理器?1.3`with`语句的基本语法2.文件操作中的上下文管理器2.1使用`with`语句打开文件2.2读取文件2.2.1读取整个文件内容2.2.2逐行读取文件2.3写入文件2.3.1覆盖写入2.3.2追加写入3......
  • 【Python学习笔记】 第7章 字符串基础
    本章范围本章主要讲str字符串类型,有关的操作适用于Unicode处理。Unicode简介ASCII是Unicode的简单形式,但Unicode适用于非英语地区的人们。两者在文件中的编码不同。在Python3.X中,有三种字符串类型:str用于Unicode文本,bytes用于二进制数据,bytearray是bytes的一种可修改的变体......
  • Python中的观察者模式:从入门到精通
    引言观察者模式允许对象(称为“观察者”)注册到另一个对象(称为“主题”或“被观察者”),从而在主题状态改变时自动收到通知。这种机制使得多个观察者可以独立地响应同一个事件,增强了系统的灵活性和可维护性。特别是在构建高度解耦、易于扩展的应用程序时,观察者模式显得尤为重要。基础......