zoukankan      html  css  js  c++  java
  • Python_Tips[0] -> 关于 import

    关于 import


    1 import

    import可用于导入一个Python的标准模块,包括.py文件或带有__init__.py的文件目录。

    在Python中,import一个模块后,若再次import该模块,不会重新加载指定模块,而是把该模块的内存地址给引用到本地环境变量。即其id是相同的。

    首先定义一个foo模块

    1 print('This is foo')  
    2 def act():  
    3     print('This is foo function: act')  

    然后在另一个模块中导入foo,

    1 import foo  
    2 print('First time import "foo", id is', id(foo))  
    3 print('This is impor')  
    4 import foo  
    5 print('Second time import "foo", id is', id(foo))  
    6 foo.act()  

    运行结果

    This is foo
    First time import "foo", id is 57152600
    This is impor
    Second time import "foo", id is 57152600
    This is foo function: act

    最终两次显示的id是相同的,且不显示foo中的打印语句,说明其内存地址没变,只是本地引用。

    2 reload

    利用importlib的reload函数对已经加载的模块进行重新加载,一般用于原模块有变化的特殊情况下,reload前该模块必须已经import过。

    1 import importlib  
    2 import foo  
    3 importlib.reload(foo)  

    3 __import__

    __import__与import的功能相同,但是__import__是一个函数,只接受字符串,其实import语句也是调用这个函数进行工作的。

    <import sys> equals to <sys = __import__(’sys’)>

    调用可以通过del删除上次的import完成unimport

     1 import sys
     2 __import__('foo')
     3 print(sys.modules['foo'])
     4 del sys.modules['foo']
     5 __import__('foo')
     6 __import__('foo')
     7 '''
     8 # euqal to "from foo import act"
     9 f = __import__('foo', fromlist=('act',))
    10 f.act()
    11 '''

    Note: import 只进行一次加载的特性,可以用于实现单例模式。

  • 相关阅读:
    python学习笔记(一)--之list与tuple
    centos 安装redis3.0为解决数据库频繁插入数据IO性能问题
    Win32汇编木马初探
    Knockout自定义绑定my97datepicker
    iTextSharp给PDF添加水印
    技术资料整理
    css模拟阴影和小三角
    统计一个部门有多少人
    js登录界面带提示
    程序员给女朋友用HTML5制作的3D相册 (www.webhek.com)<转摘>
  • 原文地址:https://www.cnblogs.com/stacklike/p/8193377.html
Copyright © 2011-2022 走看看