Python进阶——模块

1、自定义模块
  • 一个.py文件就是一个模块

  • 把能够实现某一个特定功能的代码放置在一个文件中作为一个模块,从而方便其他程序和脚本导入并使用。模块也可以避免函数名和变量名冲突

  • 作用:

    • 规范代码
    • 方便其他程序使用已经编号的代码
  • 创建与实现

    • import导入多个模块时用逗号隔开即可

    • 命名空间是记录对象名字和对象之间对应关系的空间,目前python的命令空间是通过字典来实现的。key是标识符,value是具体的对象

    • 每执行一条import语句,都会创建一个新的命名空间

      #day.py
      
      def Sun(day):
          print("风和日丽"+day)
          
      #wk.py——import语句导入模块   
      import day [as d]  #别名
      
      day.Sun("周二")   #在调用模块中的变量、函数或类时,需要在变量名、函数名或者类名前添加“模块名.”
      
      
      #wk.py——from...import语句导入模块
      【from 模块名 import 函数或变量或类】  #导入多个定义时,用逗号隔开即可,全部导入用*替代
      from day import Sun
      Sun("周二")
      
      #from import导入时,同名的定义后者会代替先者
      
      
  • 模块搜索目录

    • import 语句导入模块时,默认情况下,会按照以下顺序进行查找

      (1)当前目录,即执行python脚本所在目录

      (2)在python(环境变量)下的每个目录

      (3)到python的默认安装目录

    • 可以通过三种方式添加指定的目录到sys.path中

      import sys   	#这三个目录的位置都保存在sys模块的sys.path
      
      #3种方式
      -
      #临时添加
      sys.path.append("地址")
      
      #增加.pth文件
      在该文件中添加要导入模块所在的目录
      
      #在python环境变量中添加
      
2、以主程序的形式执行
  • 加入if的判断,是否决定在主函数文件中运行

  • 在每个模块的定义中,都包括一个记录模块名称的变量——name——,程序可以检查该变量,以确定它们在哪个模块中执行,如果一个模块不被导入到其他程序中执行,那么它可能在解释器的顶级模块中执行。顶级模块的——name——变量的值为——main——

    # day.py
    
    print("今天的不开心就到此为止吧,明天依旧光芒万丈~宝贝")#(1)第一种情况
    
    if __name__=='__main__':    				   #(2)第二种情况
        print("今天的不开心就到此为止吧,明天依旧光芒万丈~宝贝")
        
    def Sun(day):
        print("风和日丽"+day)    
    
    #wk.py
    
    import day as d   #别名
    d.Sun("周二") 
    
    #第一种结果
    今天的不开心就到此为止吧,明天依旧光芒万丈~宝贝
    风和日丽周二
    
    #第二种结果,加入了判断,被调用的文件只会执行被调用的定义,不会全部执行,如果没有加入if判断,被调用文件会被全部执行
    风和日丽周二
    
3、python中的包
  • 作用:避免模块名重名引起的冲突,规范代码

  • 就是一个文件夹,特殊之处在于在该文件夹下,必须存在一个名称为“——init——.py”的文件

    #创建包
    在对应文件夹下面创建一个名称为——init——.py的pytho文件
    eg:
    在settings包中创建一个文件——init——.py,对应的模块名为settings
    
    #使用
    import 完整包名.模块名
    eg:import settings.size	  #使用定义时需要前缀”包名.模块名“
        
    from 完整包名 import 模块名
    eg:from settings import size #使用时需要前缀”模块名.“      
    
4、引用其他模块
  • 主要包括标准模块和第三方模块

    sys			#python解释器及其环境操作
    time		#时间
    os			#操作系统服务功能
    calender	#日期
    urllib		#读取服务器的数据
    json		#json序列化和反序列化
    re			#正则表达式
    math		#运算函数
    decimal		#控制运算精度
    shutil		#高级文件操作,复制、移动、重命名
    logging		#记录事件、错误、警告、调试信息等日志信息
    tkinter		#GUI