• import模块


     一、在import模块的时候发生的事情

    1、寻找模块
    2、如果找到了,就开辟一块空间,执行这个模块
    3、把这个模块中用到的名字都录到新开辟的空间中
    4、创建一个变量来引用这个模块中

    二、注意事项:
    *1.模块不会被重复导入
    *2.模块和文件之间的内存空间始终是隔离的
    *3.模块的名字必须是符合变量命名规范的

    简单模块导入实例:
    import my_module
    # my_module.read2()
    # name = 'alex'
    # my_module.read2()  # in read2 youhongliang
    my_module.name = 'alex'
    my_module.read2()  # in read2 alex
    三、导入多个模块
    3.1 注意事项:

        1、pep8规范

        # import os
        # import time
        # import my_module
        # 内置,第三方,自定义

        2、排列顺序

        # import os
        
        # import django
        
        # import my_module
    3.2 给模块起别名
    import my_module as m
    m.read2()     # in read2 youhongliang
    # 起别名之后,原来的名字就不能用了

    起别名的应用

    def dump(method):         # (繁琐版)
        if method == 'json':
            import json
            with open('file','w') as f:
                json.dump([1,2,3],f)
        elif method == 'pickle':
            import pickle
            with open('file', 'w') as f:
                pickle.dump([1, 2, 3], f)

    简化版

    def dump(method):
        if method == 'json':      # (简化版)
            import json as m
        elif method == 'pickle':
            import pickle as m
        with open('file', 'w') as f:
            m.dump([1, 2, 3], f)

    3.3   模块搜索路径

    import sys
    print(sys.path)
    import my_module
    注意:
      正常的sys.path中除了内置、扩展模块所在的路径之外
      只有一个路径是永远不会出问题
      你直接执行的这个文件所在的目录
      一个模块是否被导入,就看这个模块所在的目录在不在sys.path中

     如果我们在同级目录中添加一个文件件,然后在这个文件夹中添加一个模块。

      直接:  import my_module2        (报错) # ModuleNotFoundError    

      做一步处理:

    import sys
    sys.path.append('D:骑士计划第五周Day26glance')
    import my_module2

    四、两种运行一个py文件的方式

    4.1    直接运行它 : cmd python xx.py(文件) pycharm 脚本

        脚本运行时 __name__ == '__main__'

      

      

    # 导入它 : 模块
    # 模块运行:__name__ == '模块名'


    4.2 语法讲解:
    在模块调用中,如果只想脚本中使用的,只需要用这个语法
    if __name__ == '__main__':  # 作为模块时,不该有的东西放在这里
        print('in my_module2')  # 重要语法
        print(__name__)
        # 函数调用

    五、模块 from ** import
    from my_module import name
    print(name)    # youhongliang
    from my_module import read2
    read2()     # in read2 youhongliang

    5.1  在from import 的过程中发生了什么事儿

    1、要找到my_module
    2、开空间,执行my_module
    3、所有的my_module中的名字都存储在my_module所属的空间中
    4、建立一个引用name,read2分别取引用my_module空间中的名字

    from my_module import name
    from my_module import read2  # in mymodule 执行一次

    区别:

    name = 'alex'
    from my_module import name
    print(name)  # youhongliang
    
     # name = 'alex'
    from my_module import name
    name = 'alex'               # 直接覆盖
    print(name)  # alex

    小技巧:

    from my_module import name,read1,read2  # 可以写多个
    from my_module import name as n,read1 as r1,read2 as r2 # 同时起别名

    5.2  * 与__all__

    from my_module import *      # 指模块里的所有变量
    print(name) #youhongliang
    read1()     # in read1
    read2()     # in read2 youhongliang
    
    脚本中:
    __all__ =['name','read1']  # 只有这两个可以调用


    
    
  • 相关阅读:
    [ASP.NET]有关缓存的一点点小思考(1)
    [C#]winfrom中DataGridView中下拉列表框数据绑定的一些小技巧
    [c#]自己制作类似winrar的打包程序(1)
    [ASP.NET]验证码的实现以及用户密码的简单加密
    [TEST]用live writer写博客
    【转载】什么是Code Smell 代码异味?
    【转】.NET NPOI操作Excel常用函数
    SpringRoo插件发布
    基于JChardet自动检测文件编码,批量转换文件编码,解决乱码问题
    FirstStep:搭建scala开发环境IDEA+scala插件+scala2.8
  • 原文地址:https://www.cnblogs.com/youhongliang/p/9605969.html
Copyright © 2020-2023  润新知