Python 自定义模块

自定义模块

  1. 什么是模块 :本质就是.py文件,是封装语句的最小单位。

  2. 自定义模块:实际上就是已定义.py文件 ,其中可以包含:函数定义,可执行语句,函数定义,统称为模块成员。

  3. 模块的运行方式

    ① 脚本方式:直接用解释器执行,或者IDE(Pycharm)中运行

    ② 模块方式:被其他的模块导入。此时作用是为导入它的模块提供资源、(变量,函数,类的定义等)

  4. Python 提供了一种可以判断自定义模块属于开发阶段还是使用阶段 __name__属性的使用

    __name__ #以脚本方式运行时 __name__为固定的字符串 (__main__)
          #以导入方式运行时 __name__就是本模块的名字 
  5. 系统导入模块的路径:

    • 内存中:如果之前成功导入过某个模块,直接使用已经存在的模块
    • 内置路径下:安装路径在:lib
    • sys.path : 是一个路径的列表
    • PYTHONPATH :import时 寻找模块的路径
  6. 可以使用sys.path.append(path) 加入模块的路径

    __file__ #当前文件的绝对路径方法

    os.path.dirname() : 可以获取某个路径的父路径 ,通常用于获取当前模块的相对路径

    sys.path.append(os.path.dirname(__file__)+r'/path')  #使用相对路径 来添加模块的位置
  7. 导入模块的多种方式:

    • import xxx :导入一个模块的所有成员

    • import xxxa,xxxb 一次性导入多个模块的所有成员

    • from xxx import xxx : 从某个模块中 导入某个成员

    • from xxx import *

      form xxx import * 和 Import xxx的区别:

      第二种方式在使用其中成员时,必须使用模块名作为前缀

      第一种方式在使用其中成员时,直接使用成员名即可 。

      import mymodel2
      
      mymodel2.fun1()
      
      from mymodel2 import *
      
      fun1()

    如何解决名称冲突的问题?:

    1. 改用Import xxx 这种方式进行导入。
    2. 使用别名解决冲突

    使用别名: alias --> as

    1. 避免名称冲突
    2. 简化书写

from xxx import * 控制成员被导入

`__all__` 是一个列表 用于表示本模块可以被外界使用的成员  
__all__ = ['AGE','age2']        #限制只能使用的变量 ,只对form  import * 时有效 

AUTHOR  = 'PANDA'
AGE = 18
age2 = 0

相对导入

​ 相对导入

​ 针对某个项目

​ 次模块 作为从外界引用的内容

​ from .. import xxx

猜你喜欢

转载自www.cnblogs.com/pandaa/p/12066880.html