zoukankan      html  css  js  c++  java
  • Day 15 python模块/模块导入

    模块的四种形式

    自定义模块

    自定义一个.py文件,文件内都是自己写的函数,则称为自定义模块,可以导入并调用

    第三方模块

    已被编译为共享库或DLL的C或C++扩展

    内置模块

    使用C编写并链接到python解释器的内置模块

    把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)

    import和from...import

    一般使用import或者from...import导入模块

    import time
    
    time.time()
    

    模块的重复导入会直接饮用之前创造好的结果,不会重复执行模块的文件,即重复导入会发生:spam=spam=模块名称空间的内存地址

    from time import time
    
    time()
    

    使用import module时,module本身被引入,但是保存它原有的命名空间,所以我们需要使用module.name这种方式访问它的 函数和变量。
    from module import这种方式,是将其它模块的函数或者变量引到当前的命名空间中,所以就不需要使用module.name这种方式访问其它的模块的方法了。

    循环导入问题

    # m1.py
    form m2 import y
    x = 10
    print('m1:',x, y)
    
    # m2.py
    form m1 import x
    y = 20
    print('m2:',x, y)
    

    运行m1,会发生报错:ImportError: cannot import name 'x'

    解决方法一:

    将定义变量放到导入模块之前

    # m1.py
    x = 10
    form m2 import y
    print('m1:',x, y)
    
    # m2.py
    y = 20
    form m1 import x
    print('m2:',x, y)
    

    解决方法二:

    将导入模块放到函数定义中

    # m1.py
    x = 10
    def func1():
    	form m2 import y
    	print('m1:',x, y)
    
    func1()
    
    # m2.py
    y = 20
    def func2():
    	form m1 import x
    	print('m2:',x, y)
        
    func2()
    

    模块搜索路径的顺序

    1. 先从内存中已经导入的模块寻找
    2. 内置的模块中
    3. 环境变量sys.path中寻找

    强调:sys.path的第一个值是当前执行文件的所在的文件夹

    python文件的两种用途

    python文件总共有两种用途,一种是执行文件;另一种是被当做模块导入。

    编写好的一个python文件可以有两种用途:

    1. 脚本,一个文件就是整个程序,用来被执行
    2. 模块,文件中存放着一堆功能,用来被导入
    # m1.py
    def f1():
        print('m1')
        
    f1()
    
    # run.py
    import m1
    

    如果直接运行run.py,则会直接运行m1.py中的f1()

    如果我们要防止这种事情发生,可以在m1.py文件中的f1()加上条件__name__ = '__main__',这样在运行run.py文件的时候就不会运行f1()了

    如果是放在被调用文件,可以用来测试,如果放在启动文件中,则是用来防止启动文件被调用

    # m1.py
    def f1():
        print('m1')
        
    if __name__ = '__main__':
    	f1()
    
  • 相关阅读:
    CKEditor 5 摸爬滚打(二)—— 自定义一个简单的加粗插件(上)
    由数组生成对称矩阵
    二终端网络可靠度
    多分类建模评估指标
    linux文本编辑器awk
    sklearn中的pipeline实际应用
    一觉醒来,我掉入计算机之中了···
    一个故事看懂计算机操作系统的进化史
    我是如何把计算机网络考了100分的?
    大一那会,我用QQ远程帮同学考过计算机二级
  • 原文地址:https://www.cnblogs.com/2222bai/p/11593226.html
Copyright © 2011-2022 走看看