python的艰难学习之路-学习记录-模块和包

模块和包

一、模块

模块其实就是一个文件···
使用import导入模块—全局变量、函数、类
使用from···import···导入部分工具,不导入模块的所有工具

from 模块名 import 工具名
这样导入的好处是可以直接使用导入的额这些工具,不需要使用 模块名.工具

1.给模块指定别名

import 模块名 as 别名

别名要符合大驼峰命名法
大驼峰命名法:没有下划线,首字母大写

2.from···import···导入相同变量名&函数名&类的情况

这种情况,会执行后者导入的变量&函数&类
主要原因是后者导入会 覆盖 前者导入的内容
tips1:鉴于上面会出现的情况,一般导入会放在整个代码最上面,及时发现重名问题
tips2:也可以使用别名的方式来解决重名的问题

3.from···import *导入所有工具

这样的好处:可以直接使用,不需要使用模块名.工具的方法
这样的坏处:如果出现重名,就会很麻烦,排查会非常困难

所以,这个方法,不推荐使用!!!

4.导入模块的搜索顺序

①、搜索 当前目录 指定模块名的文件
②、如果没有,再搜索 系统目录
所以,给文件命名时,不能跟系统的模块文件重名!!!!一旦重名,导入系统模块将无法正常运行

5.开发原则&执行未缩进代码

①、开发原则:开发的所有模块应该都是可以被导入的
②、导入模块时,会默认执行未缩进的代码

简单演示:
test文件:

a = 123
print("你好呀!你导入了我的模块呢···")

主文件

import test
print(test.a)

执行结果:
在这里插入图片描述

解决上述问题的方法···name
①、python内置属性__name__

python中__name__内置属性里常年保存着__main__这个字符串,只有当这个模块被导入的时候,属性__name__才会被替换成导入方的目录名

②、利用__name__解决上述问题

一般可以直接执行的代码,再实际开发中,都作为模块的测试代码,程序员在开发的时候,需要这些代码来测试模块是不是能正常运行==,然而我们并不希望在导入的时候执行这些测试代码,所以可以对__name__保存的字符串进行判断来解决导入的时候执行这些代码的问题:
简单代码
test文件:

a = 123


def main():  # 把这些测试代码都放在这个main函数里,被导入时不会执行
    print("你好呀!你导入了我的模块呢···")


if __name__ == "__main__":
    main()
主文件的内容不变

此时运行主文件的输出结果:
在这里插入图片描述

二、包(Package)

概念:包是一个包含多个模块的特殊目录

tips1:目录下 必须 有一个特殊的文件__init__.py

tips2:包名的命名方式和变量一样:小写字母+“_”

import 包名 可以一次性导入包中的所有模块

1.文件__init__的作用

在此文件中定义对外界提供的模块
没有在此定义的模块,是无法向外界提供的

代码基本实现
文件目录树
在这里插入图片描述
message包里封装了两个模块

文件__inint__.py
from . import receive_message
from . import send_message

文件receive_message.py

def receive():
    print("接受消息中···")


文件send_message.py
def send(txt):
    print("正在发送消息%s···" % txt)


外界文件test.py
import message

message.receive_message.receive()
message.send_message.send("hello fiona···")

执行结果!

在这里插入图片描述

注意:

①、经过测试,如果没有在__init__文件中定义对外界导出的模块,那些模块是导不出去的
②、文件__init__中 "from . "表示从当前目录导入模块

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值