zoukankan      html  css  js  c++  java
  • 模块day15课堂小结

    什么是模块

    模块是一系列功能的集合体,而函数是某一个功能的集合体,因此模块可以看成是一堆函数的集合体。一个py文件内部就可以放一堆函数,因此一个py文件就可以看成一个模块。如果这个py文件的文件名为module.py,模块名则是module

    模块的四种形式

    1. 自定义模块
    2. 第三方库
    3. 内置模块

    为什么要用模块

    1. 用第三方或者内置的模块是一种拿来主义,可以极大地提升开发效率。
    2. 自定义模块,将我们自己程序中用到的公共功能,写入一个python文件,然后程序的各部分组件可以通过导入的方式来引用自定义模块的功能。

    import和from...import

    import

    import导入 , 引用的时候要加前缀

    import发生的三件事情:

    1. 生成一个名字为time的名称空间
    2. 运行time.py文件,然后把生成的变量丢入 time的名称空间内
    3. run文件指向 time这个名称空间, time.方法名()

    模块的重复导入会直接饮用之前创造好的结果,不会重复执行模块的文件

    from...import

    from...import导入, 不需要使用前缀

    from...import发生的三件事情:

    1. 生成一个名字为time的名称空间
    2. 运行time.py文件,然后把生成的变量丢入 time的名称空间内
    3. run文件指向 import后面的一个(多个)方法名, 所以直接 方法名()

    优点:不用加前缀,代码更加精简

    缺点:容易与当前执行文件中名称空间的名字冲突

    import和from..import..的异同

    相同:

    1. 两者都会执行模块对应的文件,两者都会产生模块的名称空间
    2. 两者调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关

    不同:

    1. import需要加前缀;from..import...不需要

    循环导入问题

    m4.py
    from m2 import y
    x = 10
    
    # m2.py
    from m1 import x
    y = 20
    
    1. 执行m1.py
    2. m1.py运行到from m2 import y,要运行m2.py
    3. m2.py运行到from m1 import x,要运行m1.py
    4. 进入死循环

    解决方案

    #m1.py
    print('from m1.py')
    
    def f1():
        from m2 import x
     print(x)
    y='m1'
    
    
    # m2.py
    print('from m2.py')
    def f1():
        from m1 import y
        
    x='m2'
    

    模块的搜索路径

    内存 --> 内置 --> 自定制 --> 环境变量(sys.path)

    Pthon文件的两种用途

    1. 脚本,一个文件就是整个程序,用来被执行
    2. 模块文件: 文件中存放着一堆功能,用来被导入使用
    if __name__ == '__main__'
    

    在执行文件中运行__name__ == '__main__', 在被当做模块导入的时候__name__ == 模块文件名

    __name__是每个文件独有的,当该文件作为执行文件运行时,__name__等于'__main__';当该文件作为模块文件导入时,__name__等于文件名

    pyinstaller库的下载

    pyinstaller库 可以将.py文件转化 为.EXE执行文件

    # pyinstaller –i rose.ico(图片文件,百度转一个) –F rose.py(python文件)
    pyinstaller –i rose.ico –F rose.py
    
  • 相关阅读:
    win7下 不支持DOS全屏 This system does not support fullscreen mode
    C语言 猜字游戏
    C语言 寻找字符串的第一个小写字母
    getch 函数 当ubuntu下没有curses.h下怎么办?
    C语言 将小写字母写入文件
    vc++读取文件属性的详细信息描述 读取QQ的注册表路径
    C语言 输入字符写入文件再计算文件里的大写字母个数
    #define STRICT 让编译器进行严格类型检查
    HDU1875 畅通工程再续
    HDU4146 Flip Game
  • 原文地址:https://www.cnblogs.com/shin09/p/11594432.html
Copyright © 2011-2022 走看看