• 模块导入


    有两个文件,file1为 1.py,file2为module.py

    1.py:

    import module
    module.read2()

    module.py

    print('Helloworld')
    
    def read2():
        print('in module')

    在1.py中运行,结果为

    Helloworld
    in module

    如果更改1.py,如

    import module
    import module
    import module
    import module

    运行结果为:

    Helloworld

    所有的模块导入都应该往程序往上面写, 先内置模块,后扩展模块,最后自定义模块 

    一个模块被导入为什么不会多次重复?

    1. 先从sys.modules里查看是否已经被导入   (因为在里面已经有了,所以就不会继续导入)

    2. 如果没有被导入,就依据sys.path路径去寻找模块  如果找到了就导入

    3. 创建这个模块的命名空间

    4. 执行文件, 把文件中的名字都放到命名空间里面

    形式:

    import 模块名

    1. 模块名.变量名 和本文件中的变量名完全不冲突

    2. 模块不会重复被导入

    import 模块名 as 重命名的模块名

    1.提高代码兼容性

    from 模块名 import 变量名

    1. 直接使用变量名就可以完成操作

    2. 如果本文件中有相同的变量名会发生冲突

    from 模块名 import 变量名 as 重命名的变量名

    from 模块名 import 变量名1,变量名2,.....

    from 模块名 import *

    1. 将模块中所有变量名都放入内存

    2. 如果本文件中有相同的变量名会发生冲突

    from 模块名 import * 和__all__ 是一对

    1. 如果没有 __all__就会导入所有的名字

    2. 如果有__all__,只导入列表中的名字(只能约束该导入形式)

    module.py

    __all__ = ['s','read2']


    s = 'Helloworld'
    print(s)


    def read2():
    print('in module read2')

    def read3():
    return 'in module read3'

    如果在别的文件中调用module,调用read3()会报错:NameError: name 'read3' is not defined

    但是依然可以使用module.read3()来获得返回值并打印

  • 相关阅读:
    关于firstChild,firstElementChild和children
    trim(),正则表达式中文匹配
    Shell之基本用法
    Samba服务部署
    Linux基础(3)
    linux基础(2)
    Linux基础(1)
    网络基础及网络协议
    操作系统简介
    为何要学习计算机基础
  • 原文地址:https://www.cnblogs.com/Hxx0916/p/9604106.html
Copyright © 2020-2023  润新知