python中的模块和包_python中的模块和包

本文详细介绍了Python中的模块和包的概念及其使用,包括模块的四种类型、为何使用模块、模块的导入机制以及from...import...的优缺点。通过实例解析了模块的名称空间、循环导入问题、模块的搜索路径和编译过程。同时,文章探讨了包的定义、使用场景,以及绝对导入和相对导入的区别,旨在帮助读者更好地理解和应用Python的模块和包系统。
摘要由CSDN通过智能技术生成

模块

一 什么是模块

模块就是一组功能的集合体,可以通过导入模块来复用模块的功能。

比如我在同一个文件夹定义两个.py文件,分别命名为A.py和B.py,那么可以通过在A文件里通过import B来使用B文件里的名称空间。

python中,模块的使用方式都是一样的,可以分为四个通用类别:

使用python编写的.py文件

已被编译为共享库或DLL的C或C++扩展

把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)

使用C编写并链接到python解释器的内置模块

二 为何要使用模块

从文件级别组织程序,便于管理

随着需求的增多,功能也会越来越多,为了方便管理,通常将程序分成多个文件,这样项目的结构会更加清晰,方便管理。这时不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现功能复用。

使用别人写好的模块,提高开发效率

使用别人已经写好的轮子,在自己的项目中使用,可以极大地提高开发效率。

注意:当退出python解释器的时候,重新进入那么之前定义的函数和变量都会丢失,因此通常将程序写到文件中以便永久保存,需要时可以在命令行通过python *.py方法执行。

# test1.py

print('from test1')

money = 10

def func1():

print('test1模块:', money)

def func2():

print('test1模块')

func1()

def change():

global money

money = 100

# test2.py

import test1

test1.func1()

# 运行结果

from test1

test1模块: 10

当在tes2t导入的时候会执行test1中的代码,所以首先会打印from test1接着执行test1中的func1函数。

三 使用模块之import

1 import的使用

模块可以包含可执行的语句和函数的定义,这些语句的目的是初始化模块,它们只在模块名第一次导入时才会执行(import语句可以在程序中的任意位置使用的,且针对同一个模块可以import多次,python为了防止重复导入,当第一次导入模块时就将模块的名称空间加载到内存了,后续的import语句仅是对已经加载到内存中的模块对象增加了一次引用,并不会重复执行模块内的语句)

# test3

print('from test3')

# test4

import test3

import test3

import test3

import test3

# 运行结果

from test3

ps:可以导入sys模块,调用sys.module查看当前加载到内存中的模块,sys.module是一个字典,内部包含模块名和模块名路径的对应关系。该字典决定了导入模块时是否需要重新导入。

2 导入模块时发生了什么

运行py文件导入一个模块时,解释器做了三件事:

在执行文件中为被导入文件创建

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值