jeecgboot修改模块名_一步一步学Python3(小学生也适用) 第二十五篇: Python模块详解...

Python模块(Module)是一个Python文件,该文件以 .py为后缀名,该文件就叫做一个模块。

这个Python文件中,包含了Python对象定义和Python语句。

我们可以把相关的代码写在一个模块里,这样代码就更易懂。

每一个模块在Python里都被看做是一个独立的文件。模块可以被项目中的其他模块,脚本,甚至是交互式解析器所使用。从而使用该模块里的函数等功能。

一、Python模块的分类
  • 系统内置的模块,例如:sys、time、json模块等;

  • 自定义模块,即自己编写的模块,对某段逻辑或某些函数进行封装后供其他函数调用。注意自定义模块的命名一定不能和系统内置的模块重名,否则将不能导入系统的内容模块了。

  • 第三方开源模块:这部分模块可以通过pip install进行安装,有开源的代码;

二、Python模块的使用

要想使用模块,必须先要将模块加载进来,可以通过关键字import或from进行加载;

2.1模块的构成

模块可以包含可执行的语句和函数的定义,这些语句的目的是初始化模块,它们只在模块名第一次遇到导入import语句时才执行,并且将模块名加载到内存中,后续的import语句仅是对已经加载到内存中的模块对象增加了一次引用,不会重新执行模块的语句。

import语句可以在程序中的任意位置使用。且同一个模块可以多次import

 #我们定义一个模块,名为test_module.pyprint('老树Python:一步一步学Python3系列')

将该文件保存到我们的程序目录下。8fa137b8e291a55e05180a2fdcef7d07.png

 #新建一个T25.py运行文件#import导入test_module模块import test_module

将该文件保存到我们的程序目录下(与test_module.py同目录)

3af2c8aa2a3067bb61e5be9ab89c7bd9.png

运行结果:

89306e3a0dd59cc1b18b80360d2573ce.png

上面例子可以看出,运行T25.py,在导入test_module时,已经执行了test_module.py中的print()语句。

我们再来改一下T25.py代码,使其多次import test_module,看是否也多次执行print()语句

代码及运行结果截图如下:

404f0ce0b9a5c67d86ccfbd73c8a50fd.png

由上述结果可知,四次调用模块,只print()了一次,这是因为每次导入模块时,解释器都会去检查一下这个模块有没有之前被导入过。

2.2模块导入的过程

  • 找到这个需要导入的模块

  • 判断这个模块是否被导入过

        A 如果该模块没有被导入过:

                 创建一个属于这个模块的命名空间;如果用户没有定义变量来引用这个模块的内存地址的话,那么就使用模块的名称来引用这个模块地址;

     import test_module

    上述就是使用test_module模块名来引用这个地址。

    也可以使用as  name 给导入模块起别名来指定变量接受这个内存地址,那么就将内存地址赋值给这个变量,且下文在调用时只能使用这个变量进行调用,不能再使用模块名进行调用了。

     import test_module as tm#后面调用只能使用 tm进行调用了。

    B 如果该模块已经被导入过:

               解释器不会重新执行模块内的语名,后续的import语句仅仅是对已经加载到内存中的模块的对象增加一次引用

    导入的模块与当前模块关系

    导入的模块会重新开辟一块独立的名称空间,定义在这个模块中的函数把这个模块的命名空间当做全局命名空间,这样的话当前的空间就和模块运行的空间分隔了,谁也不影响谁。

继续修改test_module.py代码:

 #test_module.pyprint('老树Python:一步一步学Python3系列')def sum_num(a,b):    return a+b

我们来看在T25.py中直接导入运行:

fc4a0306d1069dccb594e76aa686c416.png

我们可以看到函数sum_num没执行。因为我们没有调用,所以没有执行。

那我们现在在T25.py中调用test_module中的sum_num函数

 import test_modulenum = test_module.sum_num(5,6)print(num)

上述代码中num=test_module.sum_num(5,6)中test_module是由import引入的模块命名空间,.sum_num(5,6),是代表在调用test_module模块中sum_num()函数。

运行结果:

009fa16f9d9fc6816721b5d492dc72d5.png

由上述结果我们可以看到T25.py调用sum_num()返回的值正确

我们再来把import test_module 改为别名引用

 import test_module as tmnum = tm.sum_num(5,6)print(num)

运行的结果,同上图一致。

别名引用可以简化代码或让别名更容易理解易懂。

我们在T25.py引用模块test_module中的函数时,编辑器VS Code智能提醒,会提示你模块中的函数供你使用。

bf6ed9034d47e94db0d5f5123045631d.png

2.3导入多个模块

方法一: import os,time,sys等,每个模块之间用逗号隔开

方法二:

 import osimport timeimport sys

推荐使用方法二,有时我们暂时不需要某个模块,直接注释就行。而方法一还要删了才行。

多个模块导入时顺序

模块应该一个一个的导入,先后顺序为:内置模块----->扩展(第三方)模块----->自定义模块。

因为我们在导入第三方模块时和自定义模块时,这些模块可能引用了内置模块或第三方模块,所以要先导入,否时会报错。

2.4  from ....import 导入

我们有时只想使用模块中的某些功能时,这时我们可以使用from.....import这样的格式来进行模块的某些功能的导入。而不需要用import导入所有模块。

我们继续来修改test_module.py

 print('老树Python:一步一步学Python3系列')def sum_num(a,b):    return a+bdef minus_num(a, b):    return b-adef mul_num(a, b):    return a*b

修改T25.py

 from test_module import sum_num,minus_nums_num = sum_num(5, 6)m_num = minus_num(5,6)print(s_num)print(m_num)

运行截图:

d49aa0f7b143f1ca50fffaef65d1c9ef.png

可以看到我们通过 from  ... import 导入某个功能时,就可以直接调用这个功能了。

from ... import 也支持 as name别名导入

 from test_module import sum_num as sums ,minus_num as minuss s_num = sums(5, 6)m_num = minuss(5,6)print(s_num)print(m_num)

运行的结果一样。

结束语:

这篇我们主要分析了Python模块及导入的两种方法import 和 from ... import。一步步的示例可以让你更好的理解模块的导入使用。示例中的模块为我们自定义的模块。下一篇我们将学习如何导入第三方模块。并介绍一个常用的第三方模块命名用方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值