模块

时间:2019-10-24
本文章向大家介绍模块,主要包括模块使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

模块

什么是模块

- 本质就是一个.py文件
- 一个py文件就是一个模块。
- python封装语句的最小单位:模块(py文件)
- 模块不宜过大(1000行~2000行)
- 自定义模块:实际上就是.py

模块的成员

- 模块的成员:(可执行语句,不立即执行语句)模块中的变量,for循环,if结构,函数定义
  - 可执行语句,不立即执行语句
    - 可执行语句:定义变量。函数调用。循环语句。if条件判断。
    - 不立即执行:函数定义
- 模块的运行方式:
  - 脚本方式:(直接用解释器执行,pycharm中run运行)
  - 模块方式:被其他的模块导入执行。为导入它的模块提供资源。(函数定义。变量。类定义等..。)
    #模块的导入
- 自定义被其他模块导入时,其中的可执行语句会立即执行。

python中怎么判断自定义模块属于开发阶段还是使用阶段

__name__ 方法:
    如果是以脚本方式运行:固定字符串'__main__'
    如果是以导入方式运行:__name__所处模块的名字

系统在导入模块时的路径问题

- 内存中:如果之前成功导入过某个模块,直接使用已经存在的模块。
- 内置路径中:安装路径下:Lib
- PYTHONPATH:import 时候寻找模块的路径
- sys.path:用C语言集成在解释器。是一个路径的列表。
- 总结:如果都找不到,就报错
- 动态修改sys.path 

sys.path

- 添加需要添加模块的路径到sys.path
  - sys.path.append(r'F:\\PyCharms wenjian\\day15\\a')
- 使用相对位置添加路径(——file——)
- 使用os模块找到一个路径的父路径(os.path.dirname)
  #导入模块的多种方式。
- import xxx  (xxx模块名) 导入一个模块的所有成员
- import XXX,XXX (XX多个模块名)  导入多个模块的成员(不推荐使用)(os,sys 可以考虑一起写)
- from XXX import a  (从XX导入a)从某地方(xxx)导入指定的a
- from xxx import a,b,c  从某地方(xxx)导入多个a,b,c
- from xxx import *    从某地方导入全部成员
- import xxx   与form  xxx import  * 区别:
  - import xxx:使用其中成员 必须使用模块名作为前缀。不容易产生命名冲突
  - form xxx import * : 无需指定模块名作为前缀。直接使用成员名即可(容易产生命名冲突,在后定义的成员生效。)
  - 怎么解决命名冲突问题:
    - 改用import 方式。
    - 使用别名解决冲突。
    - 自己避免使用重名名称

使用别名(alias)

- 给成员起别名,为了避免名称冲突:
  - from d15上课 import a as aaa
- 给模块写别名,简化书写
  - import d15上课 as aa   
    print(aa.a)

导入模块所有成员

form 模块名 import *

__all__

-__all__ 是一个列表,用于表示本模块可以被外界使用的成员。元素是成员名的字符串。(控制可以使用的成员)
-__all__ 放置在定义模块中(表示该模块可以被调用的元素名)(使用字符串形式书写)
        __all__=['a1',"a2"]
        
相对导入
- 在同一个文件夹(项目)下的两个模块,将一个模块导入另一个模块。(相对导入)
- 相对路径(。表示当前路径 ..上级路径)

原文地址:https://www.cnblogs.com/luyi84895838/p/11731401.html