day15

模块的四种形式

自定义模块

第三方模块

内置模块

import和from...import...

import

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

  1. import首次导入模块发生了3件事:

    1. 以模块为准创造一个模块的名称空间

    2. 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间

    3. 在当前执行文件中拿到一个模块名

      from...import

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

      from...import...首次导入模块发生了3件事:

      1. 以模块为准创造一个模块的名称空间
      2. 执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间
      3. 在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何前缀而直接使用
      • 优点:不用加前缀,代码更加精简
      • 缺点:容易与当前执行文件中名称空间中的名字冲突

循环导入问题

m1.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
    def f1():
        from m2 import y
    
    x = 10
    
    
    # m2.py
    def f1():
        from m1 import x
        
    y = 20
    

模块的搜索路径

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

python文件的两种用途

__name__ == '__main__'不成立, __name__ != '__main__'# 当testt为模块文件时,__name__等于文件名

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

pyinstaller模块

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

# pyinstaller –i rose.ico(图片文件,百度转一个) –F rose.py(python文件)
pyinstaller –i rose.ico –F rose.py
posted @ 2019-09-26 20:02  T祥  阅读(58)  评论(0编辑  收藏  举报