模块和包

目录

 

1、模块:

import:

2.模块制作:

3.包

__all__总结:


1、模块:

如果想实现与时间有关的功能,就需要调用系统的time模块。如果想实现与文件和文件夹有关的操作,就需要要用到os模块。再例如我们通过Selenium实现的Web自动化测试,那么Selenium对于Python来说就是一个第三方扩展模块。

 每一个 Python 脚本文件都可以被当成是一个模块。模块以磁盘文件的形式存在。当一个模块变得过大,并且驱动了太多功能的话,就应该考虑拆一些代码出来另外建一个模块。模块里的代码可以是一段直接执行的脚本,也可以是一堆类似库函数的代码,从而可以被别的模块导 入(import)调用。模块可以包含直接运行的代码块、类定义、 函数定义或这几者的组合。        推荐所有的模块在Python模块的开头部分导入。而且最好按照这样的顺序:Python标准库模块、Python第三方模块、应用程序自定义模块、

import:

在Python中用关键字import来引入某个模块,比如要导入模块time,就可以在文件最开始的地方用import time来引入:

语法:

 import module1

import module2[ ......

import moduleN

或者

import module1[, module2[,... moduleN]]

在调用模块中的函数时,必须加上模块名调用,因为可能存在多个模块中含有相同名称的函数,此时,如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数。为了避免这样的情况,调用函数时,必须加上模块名.          模块名.函数名

  1. import time   ;print(time.sleep(2));
  2. from modname import name1[, name2[, ... nameN]];  from time import sleep
  3. 导入一个模块的所有内容也可以使用from…import*。
  4. import pandas as pd #使用as重新命名

2.模块制作:

#当前目录的调用方式
# from module import count    (module是文件夹名字,count是模块文件的名字)
# import count
#跨目录调用方式
# from aa import count
#当项目复杂之后,调用
#以下这种会报错,
import sys
#.\\a表示的是我们的当前目录的下一层目录;.\\表示当前目录;..\\表示上衣目录;使用绝对路径D:\python\AI-04-预科Python\module\aa
sys.path.append('.\\aa')
print(sys.path)
from aa import new_count
#相当于导入以下内容

3.包

包是一种管理 Python 模块命名空间的形式,采用"点模块名称"。比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块B。

目录中只有包含一个叫做__init__.py的文件才会被认作是一个包。

在导入包的时候,Python会从sys.path中的目录来寻找这个包中包含的子目录

目录中只有包含了叫做__init__.py的文件,才能被程序认作是包,模块才能被导入成功。现在我们就在msg文件夹下创建一个__init__.py文件,并且在文件中写入__all__。

__init__.py 控制着包的导入行为。如果__init__.py文件为空的话,仅仅是把这个包导入,不会导入包中的模块。__init__.py中的__all__变量,是用来控制from包名import  * 时导入的模块。

可以在__init__.py中编写其他内容,在导入时,这些编写的内容就会被执行。可以在__init__.py中向sys.path添加当前被调用模块路径。

__all__总结:

编写Python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)

模块中不使用__all__属性,则导入模块内的所有公有属性,方法和类 。 模块中使用__all__属性,则表示只导入__all__中指定的属性,因此,使用__all__可以隐藏不想被import的默认值。 __all__变量是一个由string元素组成的列表。 它定义了当我们使用 from <module> import * 导入某个模块的时候能导出的符号(这里代表变量,函数,类等)。包中使用__all__属性,在包的__init__.py中意为导出包里的模块

 from <module> import * 默认的行为是从给定的命名空间导出所有的符号(当然下划线开头的变量,方法和类除外)。 需要注意的是 __all__ 只影响到了 from <module> import * 这种导入方式, 对于 from <module> import <member> 导入方式并没有影响,仍然可以从外部导入。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值