自学python笔记记录——Day18(模块的导入,解决导入时自动运行测试代码的问题,包的调用 )

1.模块

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

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

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

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

1.2导入模块的两种方式

1)import导入

import 模块名1
import 模块名2

模块名1.函数()
模块名2.变量
......

·

如果嫌模块名过长,可以适用as指定模块名称,以方便在代码中使用

import 模块名 as 模块别名(应该符合大驼峰命名法)

模块别名.函数()
......

·
2)from…import导入

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

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

实现方法:

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

··导入之后

·调用不需要通过 模块名.
·可以直接使用模块提供的工具 —— 全局变量,函数,类

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

一旦发现冲突后,可以通过as关键字给其中一个工具起个别名

例:
在这里插入图片描述
·

3)从一个模块中导入所有工具且不需要使用 模块名. 来调用工具,可以直接通过工具名调用

from 模块名 import *

注:通过这种方式导入不同模块,一旦不同模块中出现同名工具,则会调用后导入的模块工具,在大的程序中排查问题会非常麻烦

·

1.3模块的搜索顺序

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

1.搜索当前目录指定模块名的文件,如果有就直接导入
2.如果没有,再搜索系统目录

注: 在开发时, 给文件起名,不要和系统的模块文件重名

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

例:
在这里插入图片描述

·

1.4关于导入模块时遇到的问题

··每一个独立的python文件都是一个模块
··在导入模块时,文件中 所有没有任何缩进的代码 都会被执行一遍
例:
在这里插入图片描述

解决方法:__name__内置属性

为了解决在导入模块时会自动运行该模块的测试代码(如上),使用内置属性__name__将测试代码只在测试情况下会被调用,被导入时不会被调用。

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

例1:
在这里插入图片描述

例2:
在这里插入图片描述

标准写法:
在这里插入图片描述

·

2.包(Package)

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

好处

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

·

init.py

··当在外界时,想调用包里的模块,导入后无法直接调用
··必须要先在包中__init__.py文件里,手动添加希望被外界要调用的包里的模块

实现方法:

__init__.py 中添加

form . import 模块名1
from . import 模块名2
......
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

此时一位小白路过

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值