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对象包含到当前文件中来。

      

     

  • 相关阅读:
    也谈谈关于WEB的感想
    spring boot,https,双向ssl认证
    Spring Cloud Gateway(二)
    Spring Cloud Gateway(一)
    .Net Web Service 自定义返回值命名
    随便记一下,C#并行环境操作Winform的代码段
    随便记一下,解决Windows Server 2012无法远程登录的方法
    记录C#控件DataGridView绑定BindingList无法排序问题(转)
    记录SQL Server 2019链接Oracle 11g R2的过程
    Json CPP 中文支持与入门示例
  • 原文地址:https://www.cnblogs.com/yuandonghua/p/11771055.html
Copyright © 2011-2022 走看看