python如何重载模块实例解析

  

本文首先介绍了Python中的模块的概念,谈到了一个模块往往由多个模块组成,然后通过具体实例,分析了模块重载的相关内容,具体介绍如下。

  

模块是Python程序架构的一个核心概念,较大的程序往往以多个模块文件的形式呈现,一个模块被设计成主文件或顶层文件,用来启动整个Python程序。每个以. py为后缀的Python源代码文件都是一个模块,其他文件可通过“导”入读取这个模块的内容。从一般意义上讲,模块就是变量名的封装。如写一个模块test.py,包含一个两个变量名的名字,年龄。

        name=鞍恰?   27岁=之前      

那么,通过在Python命令行中执行下述命令

        导入测试   打印(test.name test.age)      

可以得到结果:艾丹27
  

  

函数dir (modelname)可以用来获取模块内部可用的变量名,其中会包含一些Python内置的变量名如“__doc__, __file__”。
  <强>一个Python程序往往由多个模块组成,通过进口连接。每个模块文件都是一个命名空间,看不到其他模块文件的变量名,除非通过进口导入了那个文件或者通过<代码>从模型导入变量>   

  

从本质上,“导入”就是在一个文件中载入另一个文件的内容,从而使另一个文件能够被放在外部世界使用,指令就是<代码>进口name.py>   

  

若想在同一次会话中多次运行同一个文件(或文件发生改变,必须重载),那就需要调用“重载”函数重载(名字),调用重载函数前请确保已经通过进口成功导入了该模块。看清”函数“重载()和“语句”进口的区别,<强>重载()是一个函数,参数就是已导入的文件模块文件名,进口是一个语句,不需要括号.Python的重载功能允许用户在交互过程中编辑并改进代码模块,因此为了确保运行的是最新的代码,首先使用重载()。

  

烧瓶在调试时,如果我们对文件有所修改,服务器就会重新启动,而无需我们停下服务器再重新启动,这里面就暗藏了一个重载的机制。
  

  

下面用一个简单的例子,来解释python如何<强>重载一个模块
  

  

新建一个名为reloadsetting。py的文件,内容很简单:
  

        #=utf - 8编码   ”“”   创建>   #=utf - 8编码   ”“”   创建于2016-3-25      @author:管理员   “‘   进口线程   进口reloadsetting   导入系统,操作系统,时间         def印花厂():   而真正的:   time . sleep (1)   打印reloadsetting.msg      def auto_reload ():   而真正的:      插件=(“reloadsetting”) #需要重新加载模块      国防部的插件:   试一试:   模块=sys.modules (mod)   除了:   继续      #获得文件的名字   文件名=module.__file__      # pyc结尾的文件,只在第一次载入时生成,因此,即便我们对文件进行了修改,运行中,它的修改时间是不会变的   如果filename.endswith (“.pyc”):   文件名=filename.replace (”。佩克”、“py”)   #获得文件上一次修改的时间   mod_time=os.path.getmtime(文件名)   #模块。__dict__里保存了模块的信息,具体参考全局函数   如果不是“module.__dict__ loadtime”:   模块。loadtime=0 # 1 *首先加载的时间   试一试:   #如果修改时间大于上一次载入的时间,那么就重新载入   如果mod_time比;module.loadtime:   重载(模块)   除了:   通过      模块。loadtime=mod_time   time . sleep (1)   if __name__==癬_main__”:   t_reload=threading.Thread(目标=auto_reload)   t_reload.start ()      t_reload2=threading.Thread(目标=印花厂)   t_reload2.start ()      

我们启动运行reloaddemo。py,一个线程不停的打印reloadsetting模块中的味精,一个线程不停的尝试重载reloadsetting模块。在运行过程中,修改reloadsetting模块中的味精的内容,很快,打印出来的内容也会随之发生变化,你可能会担心,如果在修改时不慎写错了代码,比如把味精给删除掉了,或者写成了味精=,而后面根本就没有赋值,那重载岂不是就失败了么,这种担忧是多余的,即便模块reloadsetting中有错误,那么在调用重载函数时,也不会发生错误,模块仍然是上一次有效重载后的状态,不信,你可以试一试

python如何重载模块实例解析