python 模块和包

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

在这里插入图片描述

文章目录

  • 前言
  • 模块
    • 什么是模块
    • 导入模块
      • import 导入模块
      • from 模块名 import 功能
      • from 模块名 import *
      • as定义别名
    • 制作模块
    • 模块的定位顺序
    • __ all __
    • 导入包
      • import 包名.模块 导入包
      • from 包名 import * 导入包

前言

Python是一种简单易学、功能强大的编程语言,而其模块和包的概念更是为我们提供了一种有效管理和组织代码的方式。模块是Python程序的基本组成单元,它是一个包含函数、变量和类的文件。而包则是由多个模块组成的一个目录,可以帮助我们更好地组织和复用代码。

在本系列的文章中,我们将从基础知识开始,逐步介绍Python模块和包的概念、语法和使用方法。

模块

什么是模块

在Python中,模块是一种组织和复用代码的方式。它是一个包含函数、变量和类的文件,以 .py 为文件扩展名。模块可以被其他程序导入和使用,以提供特定功能或实现特定任务。

Python模块使代码更易于管理和组织,同时也促进了代码的可重用性。通过将相关的功能放入不同的模块中,可以使代码更具可读性和可维护性。此外,模块还可以帮助开发人员对功能进行封装,以便在不同的项目中共享和复用代码。

导入模块

在 python 中,有以下的方式来导入模块:

  • import 模块名
  • from 模块名 import 功能名
  • from 模块名 import *
  • import 模块名 as 别名
  • from 模块名 import 功能名 as 别名

import 导入模块

前面我们也见过,当我们生成随机数的时候需要导入 random 模块,那么在 python 中可以使用 import 模块名 来导入模块。

当我们以 import 模块名 的形式导入模块的时候,使用 模块名.功能 来使用模块中的方法。

import random  # 导入random模块

result = random.randint(1,10)  # 生成1-9之间的随机数
print(result)

使用 import 模块名 也可以导入多个模块,但是不推荐 import 模块1,模块2...

from 模块名 import 功能

我们使用 import 模块名 导入的是该模块下的所有代码,我们也可以只导入该模块下的指定方法,并且我们调用方法的时候可以直接使用方法,而不需要加模块名。

from random import randint  # 导入random模块下的randint方
result = randint(1,10)
print(result)

from 模块名 import *

from 模块名 import 功能from 模块名 import * 是相似的,只是前面一种导入方法,导入的是指定的功能,而后面一种方法导入的是该模块下的所有方法,两种导入方法调用功能的时候都只需使用功能() ,而不需要加上 模块名.功能。

from math import *
print(sqrt(9))  # 3.0
print(pow(3,2))  # 9.0

as定义别名

如果我们觉得模块名或者方法名太长写的时候太麻烦的时候,我们可以使用别名。
import 模块名 as 别名 来别名模块名,from 模块名 import 功能 as 别名 别名功能名。

import time as t
t.sleep(2)  # 程序会停止两秒再结束
from time import sleep as slp
slp(2)

当我们使用别名之后,之前的名字不能再继续使用,否则会报错

from time import sleep as slp
sleep(2)

在这里插入图片描述

制作模块

在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。也就是说自定义模块名必须要符合标识符命名规则。

我们创建一个 python 文件,并且在该文件中定义一个 add_num 方法。

在这里插入图片描述

我们可以对该模块内的 add_num 方法进行测试,看方法是否能实现指定功能。

def add_num(a,b):
    return a + b
print(add_num(1,2))  # 3

每实现一个模块中的方法,我们就需要进行测试,那么当我们测试完成之后,需不需要将测试代码给删除呢?如果不删除会有什么影响呢?

我们在 Test文件中导入该模块并使用该模块下的方法。
在这里插入图片描述
在这里插入图片描述

这里 3 很显然是我们测试代码里面的测试结果,import 模块名 会将该模块下的所有代码都导入,但是我们删除了测试代码的话,下次再测试又需要重新写,那我们该怎么做既能实现测试功能,又不影响其他功能呢?

使用 if __ name __ == '__ main __': 作为条件,来使该代码只会在该模块下执行,出来该模块所在的文件就不会执行测试代码。

__ name __ 是系统变量,是模块的标识符,值是:如果是自身模块,值是__ main __,否则是模块所在的文件名

我们在模块所在文件打印 __ name __。
在这里插入图片描述
在这里插入图片描述

然后在导入该模块的文件下运行代码。
在这里插入图片描述
在这里插入图片描述

我们在模块所在文件加上对应条件并执行代码。

def add_num(a,b):
    return a + b
if __name__ == '__main__':
    print(add_num(1,2))  # 3

然后在导入该模块的文件下调用该模块的对应方法。

import my_module1
print(my_module1.add_num(3,5))

在这里插入图片描述
在这里插入图片描述
这里并不会执行我们的测试代码,这样就解决了我们的问题。

注意:如果使用 from .. import ..from .. import * 导入多个模块的时候,且模块内有同名功能。当调用这个同名功能的时候,调用到的是后面导入的模块的功能。

from my_module1 import add_num
print(add_num(-3,5))  # 2

def add_num(a,b):
    return abs(a) + abs(b)
from my_module1 import add_num
def add_num(a,b):
    return abs(a) + abs(b)
print(add_num(-3,5))  # 8

模块的定位顺序

当导入一个模块,Python解析器对模块位置的搜索顺序是:

  1. 当前文件所在的目录下的所有文件
  2. 如果不在当前目录,python 则搜索在shell变量pythonpath下的每个目录
  3. 如果前面两个路径都找不到,python会查看默认路径

注意:

  • 自己的文件名不要和已有模块名重复,否则导致模块功能无法使用
  • 使用 from 模块名 import 功能 的时候,如果功能名字重复,调用到的是最后定义或导入的功能。

__ all __

但我们使用 from 模块名 import * 导入模块的时候,我们可以指定导入的方法,而不是全部方法,我们只需要在模块中定义 __ all __ = ['方法1',‘方法2'] ,这样就只会导入 __ all __ 中的方法。

__all__ = ['add_num']
def add_num(a,b):
    return a + b

if __name__ == '__main__':
    print(add_num(1,2))

def sub(a,b):
    return a - b

在这里插入图片描述

from my_module1 import *
print(sub(1,2))

在这里插入图片描述

这里会直接提示错误。
在这里插入图片描述

Python包是一种用于组织和管理Python代码的方式。它是一个包含模块、子包和资源文件的目录,可以在Python程序中被导入和使用。包的主要目的是将相关的功能和数据组织到一个单独的单元中,以便于重用和维护。

一个包通常包含一个名为 __init__.py 的特殊文件,用于标识该目录为一个包。它可以包含其他Python模块文件(以.py为扩展名)和子包(也是一个包的目录)。

在pycharm上如何创建包

在这里插入图片描述

当我们创建完成一个包之后,我们会发现该包下会自动产生一个 __ init __.py 的文件。

在这里插入图片描述

导入包

我们首先需要在包下创建几个模块文件。

add_num.py

def add_num(a,b):
    return a + b

sub_num.py

def sub_num(a,b):
    return a - b

导入包有两种方式:

  • import 包名.模块
  • from 包名 import *

import 包名.模块 导入包

当我们使用 import 包名.模块 导入包的时候,我们以 包名.模块名.功能 来使用相关功能。

import mypackage.add_num
import mypackage.sub_num
print(mypackage.add_num.add_num(10,20))  # 30
print(mypackage.sub_num.sub_num(50,20))  # 30

from 包名 import * 导入包

当我们使用 from 包名 import * 导入包的时候,我们需要在 __ init __.py 文件中添加 __ all __ = [ ] 来设置允许导入的模块列表。

__all__ = ['add_num','sub_num']

使用 模块名.功能 的方法来使用相应的功能。

from mypackage import *
print(add_num.add_num(10,20))  # 30
print(sub_num.sub_num(50,20))  # 30

如果我们将 __ init __ 文件中的 __ all __ = [ ] 给删除或者注释掉的话,会出现什么情况乱。
在这里插入图片描述
在这里插入图片描述
所以但我们使用 from 包名 import * 导入包的时候一定要记得设置 __ init __ 文件里的 __ all __ = [ ] 来设置允许导入的模块列表。

学习资源推荐

除了上述分享,如果你也喜欢编程,想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。

😝朋友们如果有需要的话,可以V扫描下方二维码联系领取

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

因篇幅有限,仅展示部分资料,添加上方即可获取

image-20230619144606466

python学习路线图1

二、Python基础学习
1. 开发工具

2. 学习笔记

在这里插入图片描述

3. 学习视频

在这里插入图片描述

三、Python小白必备手册

图片

四、数据分析全套资源

在这里插入图片描述

五、Python面试集锦
1. 面试资料

在这里插入图片描述

在这里插入图片描述

2. 简历模板

在这里插入图片描述

😝朋友们如果有需要的话,可以V扫描下方二维码联系领取

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

因篇幅有限,仅展示部分资料,添加上方即可获取
Python 基础篇】Python 模块 模块:在Python中,一个模块就是一个含了Python代码的文件。模块可以含函数、类、变量等,它们可以被其他模块导入使用。通过将相关的代码组织在模块中,可以提高代码的可读性维护性。是一种组织模块的方式,它是一个含了多个模块的文件夹。内部可以有多层次的子,形成一个的层级结构。通过的层级结构,可以更好地组织管理代码,避免命名冲突。模块Python中重要的概念,它们提供了组织复用代码的有效工具。模块可以将相关的代码组织在一起,提高代码的可读性维护性; 阅读详情

相关推荐

Python基础:模块

模块Python中组织管理代码的重要概念。模块是一个Python代码的文件,而则是一个模块其他子的目录。通过使用模块,我们可以将代码组织成逻辑上相关的单元,提高代码的可读性、可维护性复用性。在本文中,我们学习了如何创建模块,以及如何导入使用它们。我们还介绍了如何导入特定的函数或变量,以及如何重命名导入的模块或函数。此外,我们还了解了模块的搜索路径,并介绍了如何使用标准模块。希望本文对你理解使用模块有所帮助!

BugHunterX的博客 216

Python模块

Python模块

Charge8的博客 1622

Python中的模块

Python中的模块概念解释模块的分类1. 标准的模块2. 三方模块3. 自定义的模块模块的位置模块的导入发布一个软件README.rst文件License.txt文件MANIFEST.in 文件的发布安装方式发布指定的目标文件参考文献Python中的模块概念解释模块: 为了使代码更加容易维护,提高代码重用价值,可以将一组相关功能的代码写入一个单独的py文件中供别人使用,这个.py文件就叫做做一个模块

编程小栈 1445

python中的模块

相对导入(relative import ):from . import B 或 from ..A import B,其中.表示当前模块,..表示上层模块。是一个字典(key:模块名,value:模块对象),它存放着在当前 namespace 所有已经导入的模块对象。:from . import B 或 from ..A import B,其中.表示当前模块,..表示上层模块。可以为空文件,但一定要有该文件,它是的标志性文件,在需要情况下可以在里面进行一些的初始化工作。Wheel 是有版本的。

qq_45864756的博客 2865

Python——模块

除了Python标准库中的模块外,你还可以创建自己的模块。只需编写一个.py文件,并在其中定义所需的函数、类变量即可。然后,你可以在其他Python程序中使用import语句来导入这个模块,并使用其中定义的内容。

weixin_45720999的博客 1677

Python模块模块的导入使用①

模块是一个Python定义语句的文件,其文件名就是模块名加上扩展名.py。模块可以含函数、类变量,还可以含可执行代码。是一个含多个模块的目录,其中含一个名为的特殊文件。可以嵌套,形成多层次的模块结构。文件可以是空的,也可以的初始化代码。本文详细介绍了Python模块的基本概念、创建导入方法,以及在实际开发中的应用场景。通过模块开发者可以将代码分割成多个文件目录,提高代码的可读性可维护性,实现代码的重用共享。

结合项目案例,记录点点滴滴,自己回顾,分享他人o__o 9929

Python基础——模块

模块:定义:含一系列数据,函数,类的文件,通常以.py结尾作用:让一些相关的数据,函数,类有逻辑的组织在一起,使逻辑结构更加清晰。:概念:集合了一组py文件, 提供了一组复杂的功能1. 是一个 含多个模块 的 特殊目录.2.目录下有一个 特殊的文件 __init__.py3.名的 命名方式 变量名一致,小写字母 + _

weixin_72163837的博客 980

python模块

python模块 一、模块理解: 定义:模块就是平时写的代码,保存的每一个 .py结尾的文件,都是一个独立的模块Python中的模块分为三种,分别是: 内置模块 - Python解释器自带 第三方模块 - 需要手动安装 自定义模块 - 比如一个尾缀.py的文件 二、模块导入: 1. import导入 语法形式: impport 模块名 示例: import datetime x = datetime.datetime.now() print(x) 输出: 2022-05-27 14:30:

weixin_61805348的博客 2318

python模块

用户自己编写的模块,用于复用代码。文件名以 .py 结尾,存放自定义的函数、类等。from 模块名 import * 导入一个模块到当前程序import 模块名 导入一个模块内部的全部属性到当前程序import mk #导入mk模块a =mk.add(1, 2) #调用mk模块中的add函数b =mk.my(3, 4) #调用mk模块中的my函数分类获取方式使用场景示例系统模块Python自带常用功能,性能高效mathosrandom。

m53421的博客 1139

Python 教程:模块 —— 导入模块模块组合、创建使用

通过本教程,我们了解了 Python模块的概念、如何导入模块、进行模块组合以及创建使用模块Python 中非常重要的代码组织方式,它们可以帮助我们将代码拆分成更小、更易于管理的单元,提高代码的可维护性可复用性。在实际开发中,合理使用模块可以使我们的项目结构更加清晰,开发效率更高。希望本教程能帮助你更好地掌握 Python模块的使用。

Taobaoapi2014的博客 904

Python模块

1. 模块 Module 2. 导入模块 3. 自定义模块 4. Package 5. 导入 6. __init__.py通过__all__控制允许导入的模块

Qiuhan_909的博客 839

python模块的区别

问:Python模块都可以被都是用import关键字进行引入的, 那么两者有什么区别呢? 模块: 一般来说, 单个py文件就叫模块(module), 调用这个模块直接使用"import 模块名"即可, 也可以使用"from 模块名 import 函数名/变量名/类名""from 模块名 import * " : 当我们写了几个相近的py文件后, 想要集成起来给别人使用. 这时候就需要用到我们的了. 就是为了多个py文件打起来访问的东西. 只要在里面放一个init.py文件, 在init.p

yinjieer379的博客 7025

python模块是什么_Python模块的概念

将所有代码放入一个py文件:无法维护如果将代码分拆放入多个py文件,好处:同一个名字的变量互不影响模块a 模块b| |V V#a.py #b.pyx = 5 x = 'str'def f1...

weixin_39914975的博客 251

Python模块

自定义模块:自己封装一个模块,该模块中实现某些特定的功能注意事项实际上,一个.py文件就是一个模块,py文件的文件名相当于模块名,所以一个合法的模块必须要遵循标识符的规则规范在导入自定义模块时,需要注意模块的路径问题,需要将模块所在的或文件夹声明,所以需要使用相对路径表示书写自定义模块,格式:xxx.xxx.xx…,不管是还是文件夹,用法完全相同。

巧克力配酸奶的博客 1146

python模块是什么_Python模块

模块模块是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模块。import语句是用来导入模块或者从模块里导入特定的类或者函数。如前面我们用过的math模块,从而可以使用sqrt函数来计算距离。假如有一个含Database类的database.py的模块。现有另一个模块为product.py,它需要从database.py里实例化一个Database类,然后就可以在...

weixin_39596835的博客 281
上一篇: 手把手教你安装Jupyter Notebook(保姆级教程)
下一篇: python自动化神器:pyautogui
大模型应用场景
博客等级 码龄5年 7113粉丝 1351原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值