zoukankan      html  css  js  c++  java
  • python基础之 025 模块加载与import的使用

    内容梗概:
    1. 模块
    2. import
    3. from xxx import xxx

    1.模块
    定义:
    模块就是一个包含了python定义和声明的文件,文件名就是模块的名字加上.py后缀.目前写的所有的py文件都可以看成是一个模块
    但是import加载的模块一共分成四个通用类别:
    1. 使用pyhton编写的py文件
    2. 已被变异为共享库或者DLL或C或者C++的扩展
    3. 包好一组模块的包.
    4. 使用c编写并连接到python解释器的内置模块

    为什么要用模块??
    1. 可以把代码进行分类.
    2. 可以实现代码的重用.

    2.import

    2.1系统导入的过程
    导入模块的时候都做了些什么? 首先. 在导入模块的一瞬间. python解释器会先通过sys.modules来判断该模块是否已经导入了该模块.
    如果已经导入了则不再导入.如果该模块还未导入过.则系统会做三件事.
    1. 为导入的模块创立新的名称空间
    2. 在新创建的名称空间中运行该模块中的代码
    3. 创建模块的名字. 并使用该名称作为该模块在当前模块中引用的名字.
    我们可以使用globals来查看模块的名称空间

    几个注意点
    1.在模块中使⽤用global. 我们之前说global表示把全局的内容引入到局部.
    但是.这个全局指的是py文件.换句话说.global指向的是模块内部. 并不会改变外部模块的内容
    2.如果我们在不同的模块中引入了同一个模块.并且在某一个模块中改变了被引入模块中的全局变量.
    则其他模块看到的值也跟着边. 原因是python的模块只会引入一次.大家共享同⼀个名称空间
    3.if __name__ == '__main__': 可以作为程序入口,要学会使用(重要)
    在Python中. 每个模块都有⾃己的__name__ 但是这个__name__的值是不定的. 当我们把一个模块作为程序运行的入口时.
    此时该模块的__name__是"__main__" , 而如果我们把模块导入时.此时模块内部的__name__就是该模块⾃身的名字.

    正确的导入模块的顺序:
    1. 所有的模块导入都要写在最上面.这是最基本的.
    2. 先引入内置模块.
    3. 再引入扩展模块.
    4. 最后引入你⾃⼰定义的模块.

    3. from xxx import xxx
    在使用from的时候, python也会给我们的模块创建名称空间. 这一点和import是一样的.
    但是from xxx import xxx的时候. 我们是把这个空间中的一些变量引入过来了.说白了.就是部分导入.
    当⼀一个模块中的内容过多的时候. 我们可以选择性的导入要使⽤用的内容.

    from xxx import xxx 直接函数()就可以执行行了, 并且from语句句也⽀支持一行语句导入多个内容.并且也支持as改名.


    坑:(注意)
    1.当我们从一个模块中引入一个变量的时候. 如果当前文件中出现了重名的变量时.会覆盖掉模块引入的那个变量
    2.不要重名. 切记. 不要重名! 不仅仅是变量名不要重复. 我们自己创建的py文件的名字不要和系统内置的模块重名.
    否则. 引入的模块都是python内置的模块. 切记, 切记!!!
  • 相关阅读:
    JQuery
    JS
    PHP
    Java并发编程:CopyOnWrite容器的实现
    Java并发编程:并发容器ConcurrentHashMap
    Java并发编程:同步容器
    Java并发编程:ThreadLocal
    Java并发编程:sleep、wait、yield对比
    Java并发编程:volatile关键字解析
    Java并发编程:Lock
  • 原文地址:https://www.cnblogs.com/Mixtea/p/9983737.html
Copyright © 2011-2022 走看看