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

     

    一、导入模块import


    什么是模块:一个模块就是包含了python定义和声明的文件,文件名就是模块名字加上.py
    但其实import加载的模块分为4个通用类别。
    1 使用python编写的代码
    2 已被编译为共享库或DLL的C或C++扩展
    3 包好一组模块的包
    4 使用C编写并链接到python解释器的内置模块
    如何导入模块
    同级目录下导入spam模块:

    #spam.py 
    money = 1000
    import spam
    print(spam.money)
    #1000

    执行这个导入命令会
    1、执行导入的模块文件,并将模块名加载到内存,所以只有第一次导入才会执行
    2、把这个模块中的名称空间当做全局名称空间
    3、在当前位置拿到一个模块名,可以指向2中的名称空间(spam.money)
    #为模块名起名

    import spam as a 
    print(a.money)
    #1000

    #一行中导入多个模块
    import sys,os

    二、导入模块from ... import ...


    1、这种导入方式不必使用模块名加点的方式引用模块变量,直接使用变量名即可

    from spam import money
    print(money)
    #1000

    2、当前有重新定义的变量名则会覆盖模块中的变量名

    from spam import money
    money =1111
    print(money)
    #1111

    3、from spam import * 把spam中所有的不是以下划线(_)开头的名字都导入到当前位置,大部分情况下我们的python程序不应该使用这种导入方式,因为*你不知道你导入什么名字,很有可能会覆盖掉你之前已经定义的名字。而且可读性极其的差,在交互式环境中导入时没有问题。

    在模块中使用
    __all__=['money','read1']
    则调用此模块时只有money和read1变量名可调用

     三、模块搜索路径

    python解释器在启动时会自动加载一些模块,可以使用sys.modules查看

    在第一次导入某个模块时(比如spam),会先检查该模块是否已经被加载到内存中(当前执行文件的名称空间对应的内存),如果有则直接引用

    如果没有,解释器则会查找同名的内建模块,如果还没有找到就从sys.path给出的目录列表中依次寻找spam.py文件。

    所以总结模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径中包含的模块

    需要特别注意的是:我们自定义的模块名不应该与系统内置模块重名。虽然每次都说,但是仍然会有人不停的犯错。 

    在初始化后,python程序可以修改sys.path,路径放到前面的优先于标准库被加载。

  • 相关阅读:
    算法第二章上机实践报告
    算法第一章作业
    第7章学习小结 不使用STL-map过实践题:QQ帐户的申请与登陆
    第6章学习小结
    HDU
    HDU 2089 不要62(数位DP)
    char-2
    chart-7
    chart-6
    char-8
  • 原文地址:https://www.cnblogs.com/kunixiwa/p/7282513.html
Copyright © 2011-2022 走看看