zoukankan      html  css  js  c++  java
  • python的import语句

    1、import作用

    import跟C/C++中的#include作用有点类似,都是为了调用定义在其他文件中的变量、函数或者类,但实现的区别很大。

         C/C++中如果a.cpp include了b.h那么b.h这个文件就原样加到a.cpp文件中去了,这样在b.h中的变量、函数、类就在a.cpp文件中声明了,所以在a.cpp中能够访问。注意,这里的添加是C/C++原文件的添加。

         python中如果a.py import了b.py那么不是把b.py的原代码加到a.py中,而是把b.py编译为一个module类型的对象,保存到b.pyc文件中,然后读取到内存中。在a.py中可以调用module对象中的变量、函数、类。其中b.py中的普通语句会在编译的时候被直接执行。

      下面是一个import一个module(更应该说是include一个文件,将文件转换成module对象包含进来。)

    module_name.py

    print("include module")
    
    name = "jeck"
    
    def func():
        print("hello world")
        
    
    class test():
        def func(self):
            print("class hello world")

    测试文件

    import module_name      # 将module_name.py编译成module对象包含进来
    
    print(module_name.name) # 调用module对象中的变量
    module_name.func()      # 调用module对象中的函数
    a = module_name.test()  #  例化module对象中的类。
    a.func()

    输出

    include module        # 编译时候直接执行了普通语句
    jeck                  # 调用name变量
    hello world           # 调用func函数
    class hello world     # 调用test类的func函数

     2、import模块的搜索顺序

    import module_name

      (1)、先去build_in的模块中去查找

      (2)、build_in中没有找到,就去sys.path中查找,sys.path的路径包括:当前目录、安装python时的依赖位置、环境变量中的PYTHONPATH

      如果要引用直接定义的module,要不把文件放在调用文件相同的目录中,要么把module的存放路径加入到sys.path中,sys.path是一个列表,可以这样添加路径

    sys.path.append("/home/ydh/py/lib/")

    lib目录为存放自己定义module的路径。

    3、import包

    import包是import一个目录,然后编译目录下的__init__.py文件,将__init__.py文件编译成一个module对象包含到当前文件中来。

      

     

  • 相关阅读:
    Node实践之二
    Node实践之一
    总结的JS数据类型判定(非常全面)
    利用chorme调试手机网页
    设计模式总结综述
    Python3标准库使用样例
    systemd 文档教程
    编写Postgres扩展之五:代码组织和版本控制
    编写Postgres扩展之三:调试
    编写Postgres扩展之四:测试
  • 原文地址:https://www.cnblogs.com/yuandonghua/p/11771055.html
Copyright © 2011-2022 走看看