凡是过往,皆为序章

0%

Python_10(模块和包)

基于上次的异常基本知识,本篇总结python中模块知识点。


模块

python模块(Module),是一个python文件,以 .py 结尾,包含了python对象定义和python语句。模块能定义函数、类和变量,里面也可以有其他可执行代码。

导入模块

导入模块方式

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

导入方式详解

import

  • 语法

    1
    2
    3
    4
    5
    6
    # 导入模块
    import 模块名
    import 模块名1,模块名2... # 不推荐

    # 调用功能
    模块名.功能名()

from … import …

  • 语法

    1
    from 模块名 import 功能名1,功能名2...
  • 体验

    1
    2
    from math import sqrt
    print(sqrt(9))

from 模块名 import *

  • 语法

    1
    from 模块名 import *
  • 体验

    1
    2
    from math import *
    print(sqrt(9))

as 定义别名

如果定义了别名,只能使用别名,不可再使用模块名。

  • 语法

    1
    2
    3
    4
    5
    # 模块定义别名
    import 模块名 as 别名

    # 功能定义别名
    from 模块名 import 功能名 as 别名
  • 体验

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    # 模块别名
    import time as tt

    tt.sleep(2)
    print('hello')

    # 功能别名
    from time import sleep as sl
    sl(2)
    print('hello')

制作模块

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

定义模块

新建一个python文件,命名my_module1.py,并定义testA函数。

1
2
def testA(a, b):
print(a + b)

测试模块

在实际开发中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,会自行在py文件中添加一些测试信息。例如,在my_module1.py文件中添加测试代码。

1
2
3
4
def testA(a, b):
print(a + b)

testA(1, 1)

此时,无论是当前文件,还是其他已经导入了该模块的文件,在运行的时候都会自动执行testA函数的调用,即结果2。

为此,解决方法如下:

1
2
3
4
5
6
def testA(a, b):
print(a + b)

# 只有在当前文件调用该函数,其他导入的文件内不符合该条件,则不执行下述测试代码
if __name__ == '__main__':
testA(1, 1)

关于 __name__

  • 若在本文件内运行该函数,则为__main__

  • 若在其他文件,例如导入该文件模块,则为my_module(文件名)

包将有联系的模块组织在一起,即放到同一个文件夹下,并且在文件夹内创建一个名字为__init__.py文件,那么这个文件夹就称之为

制作包

右键 — [new] — [Python Package] — 输入包名 — [OK] — 新建功能模块(有联系的模块)。

注意:新建包后,包内自动创建__init__.py文件,控制着包的导入行为。

体验

  1. 新建包myPackage

  2. 新建包内模块:my_module1my_module2

  3. 模块内代码如下

    1
    2
    3
    4
    5
    # my_module1
    print(1)

    def info_print1():
    print('my_module1')
    1
    2
    3
    4
    5
    # my_module2
    print(2)

    def info_print2():
    print('my_module2')

导入包

方法一

1
2
3
import 包名.模块名

包名.模块名.目标

体验

1
2
3
import myPackage.my_module1

myPackage.my_module1.info_print1()

方法二

注意:必须在__init__.py文件中添加__all__ = [],控制允许导入的模块列表。

1
2
from 包名 import *
模块名.目标

体验

1
2
from myPackage import *
my_module1.info_print1()
~感谢你请我吃糖果~
-------------本文结束,感谢您的阅读,欢迎评论留言!-------------