python 模块和包

这篇具有很好参考价值的文章主要介绍了python 模块和包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

python 模块和包,python,python,开发语言

前言

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,开发语言

制作模块

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

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

python 模块和包,python,python,开发语言

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

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

print(add_num(1,2))  # 3

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

我们在 Test文件中导入该模块并使用该模块下的方法。
python 模块和包,python,python,开发语言
python 模块和包,python,python,开发语言

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

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

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

我们在模块所在文件打印 __ name __。
python 模块和包,python,python,开发语言
python 模块和包,python,python,开发语言

然后在导入该模块的文件下运行代码。
python 模块和包,python,python,开发语言
python 模块和包,python,python,开发语言

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

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))

python 模块和包,python,python,开发语言
python 模块和包,python,python,开发语言
这里并不会执行我们的测试代码,这样就解决了我们的问题。

注意:如果使用 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

python 模块和包,python,python,开发语言

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

python 模块和包,python,python,开发语言

这里会直接提示错误。
python 模块和包,python,python,开发语言

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

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

在pycharm上如何创建包

python 模块和包,python,python,开发语言

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

python 模块和包,python,python,开发语言

导入包

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

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 __ = [ ] 给删除或者注释掉的话,会出现什么情况乱。
python 模块和包,python,python,开发语言
python 模块和包,python,python,开发语言
所以但我们使用 from 包名 import * 导入包的时候一定要记得设置 __ init __ 文件里的 __ all __ = [ ] 来设置允许导入的模块列表。

python 模块和包,python,python,开发语言文章来源地址https://www.toymoban.com/news/detail-568502.html

到了这里,关于python 模块和包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python实验五 函数、模块和包

    2024年02月10日
    浏览(52)
  • Python标准库(Python自带的模块和包)

            “自带电池”指python语言的标准库,因为它包含了丰富的功能和工具,几乎可以满足大部分的开发需求,就像一个内置电池一样,所以python标准库被称之为“自带电池”。 python中的os模块提供了丰富的与操作系统交互的函数。开发人员可以通过os模块提供的函数对

    2024年02月05日
    浏览(41)
  • Python的模块(module)和包(package)

    Python 的模块(module) 和包(package) 概述 在Python中,简单地说,模块(Module)一般是单个python文件;包(package)由分层模块(Module)构成——相关目录里的模块构成。Python中的库(library)是参考其它编程语言的说法,既可以是一个模块也可以是一个包,换言之是对模块或包的通

    2024年02月09日
    浏览(80)
  • Python模块和包:sys模块、os模块和变量函数的使用

    模块化指将一个完整的程序分解为一个一个小的模块,通过将模块组合,来搭建出一个完整的程序。模块化具有方便开发、维护和复用的优点。在Python中,每个py文件就是一个模块。 在一个模块中引入外部模块有两种方式: import 模块名 和 import 模块名 as 模块别名 。后者可以

    2024年02月08日
    浏览(33)
  • 【100天精通python】Day15:python 第三方模块和包,模块如何以主程序形式执行

    目录 1 常用的第三方模块 2. 第三方模块的安装和使用 2.1 安装第三方模块:

    2024年02月15日
    浏览(50)
  • Python3.11教程3:模块和包(pip/conda)、文件系统(os/ shutil/json/pickle/openpyxl/xlrd)

    本文相关链接: Python官网、Python 3.11.5 中文文档、慕课:Python语言程序设计、Real Python :Write More Pythonic Code Miniconda、Anaconda、conda文档 Python 标准库官方文档、 《os — 多种操作系统接口》、《os.path — 常用路径操作》、《shutil — 高阶文件操作》 Pandas文档《Input/output》、 op

    2024年02月09日
    浏览(51)
  • Lua学习笔记之迭代器、table、模块和包、元表和协程

    迭代器是一种对象,它能够来遍历标准库模板容器中的部分或全部元素,每个迭代器对象代表容器中确定的地址,在Lua中迭代器是一种支持指针类型的结构,他可以遍历集合的每一个元素。 泛型for自己内部保存迭代函数,实际上保存三个值:迭代函数、状态常量、控制变量。

    2024年03月09日
    浏览(61)
  • msys2安装与配置: 在windows上使用linux工具链g++和包管理工具pacman C++开发

    方便windows上的C++开发demo,不需要VS了 方便C++开发安装opencv等三方库 有了这个就不需要另外安装git, cmake, mingw64了,都可以通过pacman包管理工具一键安装 官网 https://www.msys2.org/ 官方文档 https://www.msys2.org/docs/terminals/ github https://github.com/msys2/msys2-installer/releases/ 根据github readme中的

    2024年02月11日
    浏览(38)
  • 【Go 基础篇】Go语言包详解:模块化开发与代码复用

    在Go语言中, 包(Package) 是一种用于组织代码的机制,用于将相关的函数、类型和变量等组织在一起,以便于模块化开发和代码复用。包的使用能够使程序结构更加清晰、可维护性更高,同时也是Go语言强调的一项重要特性。本篇博客将深入探讨Go语言中包的相关知识,包括

    2024年02月11日
    浏览(45)
  • Python 开发实现登陆和注册模块

    本例设计一个用户登录和注册模块,使用Tkinter框架构建界面,主要用到画布、文本框、按钮等组件。涉及知识点:Python Tkinter界面编程、pickle数据存储。本例实现了基本的用户登录和注册互动界面,并提供用户信息存储和验证。 pickle是python语言的一个标准模块,安装python后已

    2024年04月22日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包