zoukankan      html  css  js  c++  java
  • 模块

    模块

    '''
    模块:一系列功能的集合体

    定义模块:创建一个py文件就是一个模块,该py文件名就是模块名

    使用模块:在要使用模块的文件中,通过  import 模块名  来导入模块
    '''

    '''
    import module
    # 1.编译执行模块所对应的py文件,形成对应的pyc文件
    # 2.产生该模块自己的全局名称空间
    # 3.在使用该模块的全局名称空间中产生一个名字(导入的模块名)
    '''

    '''
    # 注:
    # 1.每一个文件都会产生自己的全局名称空间,且相互不影响
    # 2.多次导入,只会编译执行模块一次,将其加载到内存,之后的都是直接对名字的引用
    '''

    '''
    优点:
    1.从文件级别组织代码,是同特性的功能能统一管理
    2.可以使用系统或第三方模块(拿来主义),来提高开发效率
    '''

    from 导入

    from 模块名 import 名字1, 名字2, ..., 名字n
    # 可以指名道姓导入模板中所有想导入的名字


    from  模块名 import *
    # 导入的是模块中的__all__这个列表
    # 1、系统默认该列表不会收录_开头的名字
    # 2、可以自定义__all__列表来规定外界通过*可以导入的名字


    # 不建议直接导入 *,因为可读性差,且极容易出现变量重名
    # 模块中有 名字a
    from  模块名 import *
    # 可以使用模块中的a
    a = 20
    # 模块中的a就被覆盖了,且在代码上还不能直接看出


    # 其别名
    from 模板名 import 名字1 as 别名1, ..., 名字n as 别名n

    自执行与模块的区别

    # __name__:
    # 1.在py文件作为模块被使用时,__name__为模块名
    # 2.在py文件自执行时,__name__为字符串 '__main__'

    print("共有逻辑")
    if __name__ == '__main__':
        # 所有自执行的逻辑
        print("m6: 我是自执行的")
        a = 10  # 产生的是全局的名字
    else:
        # 所有模块的逻辑
        print("m6: 我被导入执行的")
        print(a)  # 会报错:走else就不可能走if,所以a压根没产生

    大总结

    '''
    模块的概念:一系列功能的集合体
    为什么要使用模块:使用模块后的优点:1文件角度考虑代码,2拿来主义,提供开发效率
    py中实现模块的方式:4种,重点:py文件


    定义模块:新建一个py文件:文件名就是模块名,尽量采用全英文,可以结合数字与下划线
    使用模块:可以不用起别名,但一旦起别名,原名字就不能再使用了
        -- import 模块名 as 别名
        -- from 模块名 import 名字 as 别名
        
    自执行文件与模块区分:__name__
    '''

  • 相关阅读:
    BZOJ 2212/BZOJ 3702
    BZOJ 4761 Cow Navigation
    BZOJ 3209 花神的数论题
    BZOJ 4760 Hoof, Paper, Scissors
    BZOJ 3620 似乎在梦中见过的样子
    BZOJ 3940 Censoring
    BZOJ 3942 Censoring
    BZOJ 3571 画框
    BZOJ 1937 最小生成树
    BZOJ 1058 报表统计
  • 原文地址:https://www.cnblogs.com/guanchao/p/10674726.html
Copyright © 2011-2022 走看看