Python学习--模块

01模块

1.1模块的概念

        模块是Python程序框架的一个核心概念

--每一个以扩展名py结尾的Python源代码文件都是一个模块

--模块名同样也是一个标识符,需要符合标识符的命名规则

--在模块中定义的全局变量函数都是提供给外界直接使用的工具

--模块就好比是工具包,要想使用这个工具包中的工具,就需要先导入这个模块

1.2模块的两种导入方式

1)import导入

import 模块1, 模块2  #  不推荐

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

       

import 模块1
import 模块2

导入之后

        --通过模块名,使用模块提供的工具--全局变量、函数、类

        --如果模块的名字太长,可以使用as指定模块的名称,以方便在代码中的使用

import 模块1 as 模块别名

       注意:模块别名应该符合大驼峰命名法

2)from ... import导入

--如果希望从某一个模块中,导入部分工具,就可以使用from ... import的方式

--import 模块名 是一次性把模块所有工具全部导入,并且通过模块名/别名访问

# 从模块导入某一个工具
from 模块名1 import 工具名

导入之后

        --不需要通过模块名

        --可以直接使用模块提供的工具--全局变量、函数、类

注意:如果两个模块存在同名的函数,后倒入的模块的函数会覆盖掉先导入的函数

from Py_20220811_01 import say_hello
from Py_20220811_03 import say_hello
say_hello()

--开发时import代码应该同意写在代码的顶部,更容易即使发现冲突

--一旦发现冲突,可以使用as关键字给其中一个工具起一个别名

from Py_20220811_01 import say_hello
from Py_20220811_03 import say_hello as modul2_say_hello
say_hello()

3)from ... import *导入

# 从模块导入所有工具
from 模块1 import *

注意 :这种方式不推荐使用,是因为函数重名并没有任何提示,出现的问题不好排查

from Py_20220811_01 import *
from Py_20220811_03 import *
say_hello()

1.3模块的搜索顺序

Python的解释器在导入模块时,会:

        1、搜索当前目录指定模块名的文件,如果直接导入

        2、如果没有搜索系统目录

--在开发时,给文件起名,不要和系统的模块文件重名(会覆盖)

--Python中每一个模块都有一个内置属性__file__可以查看模块的完整路径

import random
# 生成一个0~10的数字
rand = random.randint(0,10)
print(rand)
print(random.__file__)

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

--一个独立的Python文件就是一个模块

--在导入文件时,文件中所有没有任何缩进的代码都会被执行一遍

实际开发场景

        --在实际开发中,每一个模块都是独立开发的,大多都有专人负责

        --开发人员通常都会在模块下方增加一些测试代码

                仅在模块内使用,而被导入到其他文件中不需要执行

__name__属性

        1、该属性可以做到测试模块的代码只在测试情况下被运行,而在被导入会被执行

        2、__name__是Python的一个内置属性,记录着一个字符串

        3、如果是被其他文件导入的,__name__就是模块名

        4、如果是当前执行的程序,__name__是__main__

因此,在很多Python文件都是如下格式:

# 导入模块
# 定义全局变量
# 定义类
# 定义函数

# 在代码的最下方
def main():
    # ...
    pass


# 根据__name__判断是否是被调用还是本体内自己用
if __name__ == "__main":
    main()

02包

---是一个包含多个模块的特殊目录

--目录下有一个特殊的文件__init__.py

--包名的命名方式和变量名一致,小写字母+_

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

案例演练:

        1、新建一个hm_message的包

        2、在目录下,新建两个文件send_message和receive_message

        3、在send_message文件中定义一个send函数

        4、在receive——message文件中定义一个receive函数

        5、在外部直接导入hm_message的包

import hm_message

hm_message.send_message.send("我是帅哥!")
print(hm_message.receive_message.receive())

__init__.py

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

# 从当前目录导入模块列表
from . import send_message
from . import receive_message

03发布模块

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

        3.1制作发布压缩包步骤

                1)创建setup.py

                -setup.py的文件

        固定模板

from distutils.core import setup

setup(name="hm_message",              # 包名
      version="1.0",                 # 版本
      description="个人模块",           # 描述信息
      long_description="我的模块",      # 完整的描述信息
      author="王总",                       # 作者名
      author_email="295723987@qq.com",   # 作者邮箱 
      url="www.baidu.com",              # 作者主页
      py_modules=["hm_message.send_message",
                  "hm_message.receive_message"])

                2)构建模块

# 在Windows端可以使用powershell
python setup.py build

                3)生成发布压缩包

python setup.py sdist

        3.2安装模块

tar -zxvf hm_message-1.0.tar.ge  # 这是一个压缩包的名字
sudo python setup.py install

卸载模块

cd 目标文件目录
sudo rm -r hm_message*

        3.3pip安装第三方模块

        --第三方模块通常是指由知名的第三方团队开发的并且被程序员广泛使用的python包/模块

        例如:pygame就是一套非常成熟的游戏开发模块

        --pip是一个现代的,通用的python包管理工具

        --提供了对python包的查找、下载、安装、卸载等功能

安装和卸载的命令如下:

# 将模块安装到python2.x环境
sudo pip install pygame
sudo pip uninstall pygame

# 将模块安装到python3.x环境
sudo pip3 install pygame
sudo pip3 uninstall pygame

Windows直接

pip install pygame

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值