day 15

01.模块的四种形式

python解释器看成手机,pip看成应用管家,模块就是应用软件

  1. 模块类比

    1. 系统自带软件(系统自带,不需要安装)
    2. 现成软件(需要到应用管家下载,安装)
    3. 自定义的软件(自己编写的功能文件)
  2. 模块类型

    python模块文件==》XX.py

    1. 内置模块;python解释器自带的模块
    2. pip安装的模块;pip install XXX 或 pycharm内安装
    3. 自定义模块;自己用代码编写的实现某一功能的文件
    4. 包(模块);含有模块文件的文件夹

02.模块的两种导入方式

例;使用time模块中的sleep功能

  1. import

    1. 开辟一块内存空间,内存空间命名为time
    2. 把time.py中的所有代码读入名称空间,然后运行
    3. 通过time.sleep()的方法使用time模块中的方法
    4. 优缺点;
      1. 优点;一次性导入了.py文件中所有的功能,需要加前缀运行不会与自定义变量名冲突
      2. 缺点;使用时需要加前缀
  2. from time import sleep

    1. 开辟一块内存空间,内存空间命名为time
    2. 把time.py中的所有代码读入名称空间,然后运行
    3. 把sleep()功能读入当前运行文件多开辟的内存空间中,通过sleep()直接使用该方法
    4. 优缺点;
      1. 优点;使用方便,不需要加前缀运行(from XX import * ;导入所有功能)
      2. 缺点;容易与执行文件中定义的变量名冲突
  3. 自定制模块

    使用方法与上述两种相同

    自定制模块的用途;分文件储存代码--》函数与函数之间分开--》让代码更加清晰--》不同模块干不同的事情

03.循环导入

当我们定制两个.py文件出现下面的状况时就发生了循环导入

重复导入相同名称的.py文件只会创建一个内存地址

from XX import X 是在做两件事,当两件事都失败时报错

# m1.py
from m2 import y # 创建m2内存空间,让m1的内存空间得到y=20
x=10
print(x,y)
# m2.py
from m1 import x # 创建m1内存空间,让m2的文件内存得到x=10
y=20
print(x,y)

顺序;我们运行m1.py文件 ——》创建m2内存空间,导入y失败——〉访问m1空间导入x失败——》继续运行导入y再次失败报错 ‘无法自m2导入y’

破解方法

# m1.py
def f1():
    from m2 import y

    print('m1:', x, y)


x = 10
f1()
# m2.py
def f2():
    from m1 import x

    print('m2:', x, y)

y = 20

04.模块搜索路径

内存——内置——自定义

05.python文件的两种用途

python文件既可以是执行文件,也可以是模块文件

__name__=='__main__';文件为执行文件时
文件为模块文件时__name__==文件名
# __name__是每个文件独有的,当该文件作为执行文件运行时,__name__等于'__main__';当该文件作为模块文件导入时,__name__等于文件名
原文地址:https://www.cnblogs.com/luocongyu/p/11595729.html