欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python学习总结(七)模块与包

程序员文章站 2022-07-10 12:20:08
...

一、模块(module)

模块是 python 程序架构的一个核心概念

  • 模块 就好比是 工具包,要想使用这个工具包,就需要用关键字import导入
  • 每一个以扩展名py结尾的python源代码都是一个模块
  • 在模块中定义的 全局变量函数 都是模块能够提供给外界直接使用的工具

模块的导入

关键字 作用 备注
import 模块 导入指定模块的全部 1.如果模块名过长多个模块具有相同方法名,使用关键字 as 为他们起别名 2.调用模块的方法时需要用模块.方法()模块.属性或的形式
from 模块 import 工具名 导入一个模块的部分工具 这样导入之后,直接使用工具名对应的函数即可;如果有多个模块具有相同的方法名,使用as为这些同名方法取不同别名
as 为一个变量取别名 为模块取别名应该满足大驼峰命名法,例如:import module_1 as Md_1

模块的搜索顺序

  1. 首先在 当前目录 搜索
  2. 如果当前目录没有搜索到,则进入 系统目录 进行搜索

因此,如果在当前目录下有模块和Python自带的模块同名,则只会使用当前目录下的模块。故在给自己当前目录下的模块起名时,应该避免和系统模块起相同的名字

__file __
如果使用import导入了一个模块,使用 __file __ 可以查看该模块的路径。ex.

import random
print(random.__file__)

输出:
Python学习总结(七)模块与包


测试模块语句

当使用import导入一个模块时,模块内所有没有缩进的代码都会被执行。而开发一个模块时一定要对这个模块进行测试,这便形成有如下方法。

使用 __name __ 写测试语句

__ name __ 的特点
  1. __name __ 用来保存字符串
  2. 在本模块中它的值恒为 __main __
  3. 如果一个模块A导入了另一个模块B,那么 模块B.__main __ 值为 "模块B"

因此,测试可以如下进行:
如果是在被导入的模块B中测试该模块(__name __ 值为 __main __),那么执行测试语句。否则不做任何执行即可。

def func():
    print("此语句是否会被执行")


if __name__ == "__main__":
    func()
    print("果然被执行了!")

二、包(package)

包的概念及使用

包是一个包含多个模块特殊目录,目录下包括一个特殊文件 __init __
包的导入和导入模块类似,形式:import 包名,只不过想要使用包中的工具,则需要在包的 __init __ 文件下导入此包的模块。

__init __的作用:
将此包下的模块进行导入,在其他地方调用这个包时,以便访问使用这个包的方法。

常见格式:
from . import 模块名


一个例子:

1.test_ 包,目录:__init __.py __test_1 __.py __test_2 __.py
(1) __init __.py

from . import test_1  # 导入模块
from . import test_2

(2)__test_1 __.py

def test_func_1():
    print("test_1 被使用")

(3)__test_2 __.py

def test_func_2():
    print("test_2 被使用")

2.外部调用

import test_  # 导入test_ 包,此包可供使用的模块放在 __init__ 文件下
test_.test_1.test_func_1()
test_.test_2.test_func_2()