zoukankan      html  css  js  c++  java
  • Day15模块(导入,使用)

    Day15模块

    什么是模块:
    一系列功能的集合体
    一个py文件就是一个模块
    aaa.py就是aaa模块

    模块四种形式:
    内置的模块
    py文件
    第三方的

    模块三种来源:内置的,第三方,自定义

    为什么要用模块
    1.使用内置的或者第三方的好处是拿来主义,极大提升开发效率
    2.使用自定义模块的好处是,将程序各部分组件共用的功能提取出来放到一个模块内,其他组件通过导入使用,减少代码冗余

    如何用模块(py文件):
    首次导入模块
    1.产生一个模块的名称空间
    2.执行模块内代码,将产生的名字放入模块的名称空间内
    3.在当前执行文件中拿到模块名字,名字指向模块的名称空间

    之后的导入直接引用首次导入的成果

    使用
    模块名.(变量or函数名)

    补充:
    import spam as sm
    模块名纯小写加下划线
    模块名不能以数字开头,避免中文定义模块名

    import spam 与 from spam import read区别
    首次导入前两步与import导入一样,第三步不一样,在当前执行文件中拿到名字money,该名字指向模块的名称空间中的money
    money如果是不可变类型,在模块中改变这个money,不会影响执行文件中的money
    如果是可变类型,在模块中改变这个money,执行文件中的money会随之改变

    import 总结
    优点:引用模块中的名字必须加前缀(模块名.),指名道姓的问某一个名称空间要名字,不会与当前执行文件名称空间冲突
    缺点:不够简洁

    from ..import
    优点,引用模块中的名字不用加前缀,使用更为简洁
    缺点:容易与当前执行文件名称空间中的名字冲突

    from .. import * 代表所有名字调用
    最好不要用

    __all__ = ["name"]
    import *时只能引用all设置的名称
    

    模块的查找顺序
    1.内存
    2.内置模块
    3.sys.path(执行文件为准)

    pycharm为了识别目录结构,它把项目根文件夹放入环境变量
    所以执行文件的环境变量导入后,其他模块导入的时候就不用

    if __name__ == "__main__"
    当文件被当做执行文件直接运行时,__name__等于__main
    当文件被当做模块导入时,__name__为模块名
    
    

    应该把项目的根目录加到环境变量里
    应该把项目的根目录所在绝对路径拿到,然后加到环境变量里

    import os
    os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

    把启动文件直接放在根目录下,可以避免更新环境变量和模块导入时找不到模块的问题(前提是采用from文件夹名导入模块)

  • 相关阅读:
    jupyter notebook 和 opencv
    AMD 处理器 Ubuntu 16.04 LTS 配置 opencv、caffe 小结
    caffe 在 windows 使用
    MATLAB数字图像处理
    游记(5)
    POJ-1789-Truck History 解题报告
    POJ-2560-Freckles 解题报告
    POJ-1308-Is It A Tree? 解题报告
    POJ-1182-食物链 解题报告
    POJ-1861-Network 解题报告
  • 原文地址:https://www.cnblogs.com/robert-zhou/p/10064072.html
Copyright © 2011-2022 走看看