zoukankan      html  css  js  c++  java
  • python 导入模块、包

    1. 模块:一个有逻辑的python文件,包含变量、函数、类等。
    2. 包:一个包含__init__.py的文件夹,存放多个模块
    import 本质是路径搜索,查找sys.path下有无你导入的 package 或 模块 文件,有就行,没有就报错。

    1. 导入模块,本质是把导入的模块解释执行一遍
    1. 同级目录,直接导入
    1. import <模块名>; # 相当于执行了<模块名> = <模块所有代码>
    a. 函数调用方法:<模块名>.<函数名>()
    b. 变量调用方法: <模块名>.<变量>
    2. from <模块名> import <func1,func2...> ;效率相对较高,只导入某个对象,相当于执行<函数名>=<函数部分代码>
    3. from 模块名 import *; 不建议使用,如果此文件中出现相同的变量或者函数名,则覆盖导入的模块中的变量和函数
    2. 不同目录,需要添加模块所在的文件夹到sys.path, 然后导入方法同上。


    2. 导入包及包中的模块,本质是把包下的__init__.py执行一遍
    1. import 包名
    a. 调用方法:包名.模块名.函数名()
    b. 变量调用: 包名.模块名.变量
    2. 不同目录
    1. 先定位到两者共同目录下,即两者的父目录,或者父目录的父目录都行
    方法:
    1. 定位当前文件的绝对路径:os.path.abspath(__file__)
    2. 定位到文件绝对路径的父目录:os.path.dirname(os.path.abspath(__file__))
    3. 根据情况,不停地使用2中的os.path.dirname(),直到找到两者的共同目录
    2. 将路径添加到环境变量里:sys.path.insert(0,path),append方法可能会出错
    a. 查看环境变量的方法: print(sys.path)
    3. 从你添加的路径导入
    1. 如果你添加的两者到父目录,直接: from package import 模块名,调用: 模块名.函数名()
    2. 如果添加的两者的父目录之上的目录,直接: from package.package.package import 模块名,调用: 模块名.函数名()


    包导入,太长不看简洁版:
    1. 获取两个需要导入的模块的共同文件夹,父目录 或 父目录+
    2. 将目录添加到 sys.path : sys.path.insert(0,os.path.dirname(os.path.abspath(__file__))),
    需要import os,sys
    4. 从目录的下级目录开始导入: from *dir.*package.package import module

  • 相关阅读:
    常见三种字符编码的区别:ASCII、Unicode、UTF-8
    字节、字、bit、byte的关系
    SQLite 3 中的数据类型
    关于线程安全和可重入的区别
    线程安全与可重入
    c++中const变量定义与头文件包含的有关问题
    extern "C"的用法解析
    gVim for windows 简单使用教程
    函数对象
    Qt核心剖析:信息隐藏
  • 原文地址:https://www.cnblogs.com/wztshine/p/11765930.html
Copyright © 2011-2022 走看看