Python学习第21课 模块

模块

目标

● 模块
● 包
● 发布模块

01.模块

1.1 模块的概念

模块是Python程序架构的一个核心概念
● 每一个以扩展名py结尾的Python源代码文件都是一个模块
● 模块名同样也是一个标识符,需要符合标识符的命名规则
● 在模块中定义的全局变量、函数、类都是提供给外界直接使用的工具
● 模块就好比是一个工具包,要想使用这个工具包的工具,就需要先导入这个模块

1.2 模块的两种导入方式

1)import导入

import 模块名1, 模块名2

提示:在导入模块时,每个导入应该独占一行

import 模块1
import 模块2

● 导入之后:
通过模块名. 的方式使用模块提供的工具——全局变量、函数、类

py_01_测试模块1.py

# 全局变量
title = "模块1"


# 函数
def say_hello():
    print("我是%s" % title)


# 类
class Dog(object):
    pass

py_02_测试模块2.py

# 全局变量
title = "模块2"


# 函数
def say_hello():
    print("我是%s" % title)


# 类
class Cat(object):
    pass

py_03_import导入模块.py

import py_01_测试模块1
import  py_02_测试模块2

py_01_测试模块1.say_hello()
py_02_测试模块2.say_hello()
dog = py_01_测试模块1.Dog()
print(dog)
cat = py_02_测试模块2.Cat()
print(cat)

模块别名

import 模块名1 as 模块别名
import py_01_测试模块1 as DogDemo1
import py_02_测试模块2 as CatDemo2

DogDemo1.say_hello()
CatDemo2.say_hello()
dog = DogDemo1.Dog()
print(dog)
cat = CatDemo2.Cat()
print(cat)

2)from … import 导入
● 如果希望从某一个模块中,导入部分工具,就可以使用from … import的方式
● import 模块名 是一次性把模块中所有工具全部导入,并且通过模块名/别名访问

from 模块名1 import 工具名

● 导入之后
不需要通过模块名.的方式来调用,可以直接使用模块提供的工具——全局变量、函数、类

注意:如果两个模块,存在同名的函数,那么后导入模块的函数,会覆盖掉先导入的函数
● 开发时,import代码应该统一写在代码的顶部,更容易及时发现冲突
● 一旦发现冲突,可以使用as关键字给其中一个工具起别名

** from…import* **
一次性导入所有工具

1.3 模块的搜索顺序【扩展】

Python解释器在导入模块时,会:
1、搜索当前目录指定模块名的文件,如果有就直接导入
2、如果没有,再搜索系统目录
在开发时,给文件起名不要和系统的模块文件重名
Python中每一个模块都有一个内置属性 __ file __ 可以查看模块的完整路径

1.4 原则——每一个文件都应该是可以被导入的

● 一个独立的Python文件就是一个模块
● 在导入文件是,文件中所有没有任何缩进的代码都会被执行一遍
实际开发场景
● 在实际开发中,每一个模块都是独立开放的,大多都有专人负责
● 开发人员通常会在模块下方增加一些测试代码(仅在模块内部使用,而被导入到其他文件是不需要执行)

__ name __ 属性

● __ name __ 属性可以做到测试模块的代码只在测试情况下被运行,而在被导入时不会被运行

● __ name __ 属性是Python的一个内置属性,记录着一个字符串
● 如果是被其他文件导入的, __ name __ 就是模块名
● 如果是当前执行的程序,__ name __ 是 __ main __

02.包

概念

● 包是一个包含多个模块的特殊目录
● 目录下有一个特殊的文件 __ init __ .py
● 包名的命名方式和变量名一致,小写字母 + _

好处
● 使用import 包名 可以一次性导入包中的所有模块

案例演示

1、新建一个py_message的包
2、在目录下,新建两个文件send_message和receive_message
3、在send_message 文件中定义一个send函数
4、在receive_message 文件中定义一个receive函数
5、字外部直接导入py_message 的包

__ init __ .py
● 要在外界使用包中的模块,需要在 __ init __ .py 中指定对外界提供的模块列表

03.发布模块(了解)

● 如果希望自己开发的模块,分享给其他人,可以按照以下步骤操作

3.1 制作发布压缩包步骤

1)创建setup .py
● setup .py 的文件

from distutils.core import setup

setup(name="py_message",    # 包名
      version="1.0",    # 版本
      description="py's send and receive message",  # 描述信息
      long_description="all send and receive message",  # 完整描述信息
      author="py",  # 作者
      author_email="[email protected]",   # 作者邮箱
      url="www.py.com", # 主页
      py_modules=["py_message.send_message",
                  "py_message.receive_message"])

有关字典参数的详细信息,可以参阅官方网站

2)构建模块
在Python 3.x 中,setup .py bulid

3)生成发布压缩包
在Python 3.x 中,setup .py sdist

猜你喜欢

转载自blog.csdn.net/weixin_42057995/article/details/89405088
今日推荐