zoukankan      html  css  js  c++  java
  • 模块详解以及import本质

    • 定义:

    模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test)

    • 导入方法

    同一目录下的导入

    improt *

    name = "alex"
    def sayhello():
        print("hello in module_test1")
    
    def logger():
        print("logger in module_test")
    module_test1.py
    import module_test1
    a = module_test1.name
    print(a)
    module_test1.logger()
    main.py

    from module_test1 import logger ,name

    from . import logger  从当前路径导入logger,.代表当前路径

    main.py
    from module_test1 import logger ,name
    print(name)
    logger()

    from module_test1 import logger  as module_logger ,name as module_name
    from module_test1 import logger  as module_logger ,name as module_name
    print(module_name)
    module_logger()
    main.py(带别名)

    import本质(路径搜索和搜索路径):导入模块的本质就是把python文件解释一遍

     

    包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py文件)

    导入包的本质就是执行该报下的__init__.py文件

    不同目录下的导入:

     main.py 导入module1下文件module_test2.py

    import os,sys
    '''
    __file__:代表当前文件
    os.path.abspath:获取绝对路径
    os.path.dirname:获取当前目录
    '''
    a = os.path.abspath(__file__)#获取当前文件所在的绝对路径
    print(a)
    b = os.path.dirname(a)#获取当前文件所在的目录
    print(b)
    c = os.path.dirname(b)#获取当前文件所在目录的上一级目录
    print(c)
    #合写:
    d = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    print(d)
    
    #sys.path是寻找导入文件所在路径的列表,一般从左到右寻找
    path = sys.path
    print(path)
    e = "%smodule1"%d
    sys.path.append(e)#将上一级目录加入到列表里,才能导入该目录下的其他文件,append是加到列表最后,这里也能使用insert插入到第一个位置
    
    import module_test2
    module_test2.logger()
    导入不同目录下的文件
    •  导入优化
    import module_test1
    #每次调用都需要花费时间去查找对应位置
    module_test1.sayhello()
    module_test1.logger()
    #只查找一次,使用多次的时候能够减少花费时间
    from module_test1 import sayhello
    sayhello()
    • 模块的分类:
    1. 标准库
    2. 开元模块
    3. 自定义模块
  • 相关阅读:
    Debugging Auto Layout:Ambiguous Layouts
    Debugging Auto Layout:Unsatisfiable Layouts
    Debugging Auto Layout
    Auto Layout Cookbook:Views with Intrinsic Content Size
    编译地址与运行地址
    Memory Controller
    ARM寄存器
    C++指针悬挂(赋值运算符重载)
    多态性,友元与静态成员 基础知识小结
    ARM 汇编指令集
  • 原文地址:https://www.cnblogs.com/cheng662540/p/8138006.html
Copyright © 2011-2022 走看看