模块
模块
''' 什么是模块: 模块就是一系列功能的结合体 模块的三种来源: 1.内置 2.第三方(就是别人写的模块) 3.自带以(自己写的) 模块的四种表现形式: 1.使用python编写的py文件(可以说一个py文件就是一个模块) 2.已被编译为共享库或DLL的C或C++扩展(了解) 3.把一系列模块放入一个文件夹下(这个文件夹就是一个包,文件夹下必须有__init__文件) 包就是一系列模块的结合体 4.使用C编写并连接到python解释器的内置模块 为什么要用模块? 1.用别人写好的模块,极大的提高开发效率 2.用自己写的模块 在开发项目的时候,不可能把所有的代码写在一个py文件中,需要写入多个文件中 可以将核心的写法写在一个文件中,其他文件可以使用模块进行导入 在使用模块时,需要区分好什么是被执行文件, 什么是导入文件,就是什么是模块 '''
import方法
''' ''' import md1 ''' 右键执行run1文件 1.首先会在执行文件中创建一个属于run1的名称空间 2.首次导入模块(md1.py) 1.会执行md1文件 2.运行md1.py文件中的代码,再创建属于md1的的名称空间,再将执行代码产生的名字和值得放入mckj 3.在执行文件中产生一个可以指向md1名称空间的名字 多次导入模块不会反复执行模块中的代码,只有第一次会执行模块中的代码 再次导入就直接指向第一导入的成果(就是第一次导入的时候,已经产生名称空间,所有东西都在内存中了,再次导入直接指向名称空间在内存中的地址) ''' # 访问模块中名字指向的值 money = 99 md1.read1() # md 1000 ''' 只要你能拿到函数名 无论在哪都能通过函数名加括号进行调用(调用的时候会回到函数定义阶段,依次执行代码) 函数在定义阶段,名字查找顺序就已经固定好了,不会因为调用位置的改变而改变 使用import调用模块后,想在模块名称空间中使用名字,统一句式:模块名.名字 1.模块名.名字访问模块中的名字,永远不会与执行文件中的名字相冲突 2.想访问模块中的名字,必须使用 模块名.名字 同时导入多个模块,最好像一下方式 import time import os import sys 不推荐 import sys,os,time 模块名比较复杂是可以给模块起别名 import md1 as m '''
from...import...使用方法
'''''' ''' 可以一次性导入md文件中多个名字 from md import money,read1,read2 ''' from md import money,read1,read2 ''' 在运行run文件时 首先会创建run的名称空间,再导入md模块 第一次导入md模块 会执行md模块中的代码 创建md模块的名称空间 直接拿到md名称空间中某个值的名字 ''' ''' 使用from...import...的特点 访问模块中的名字是不需要加模块名的前缀 访问模块中的名字会与执行文件名称空间中的名字冲突 ''' from md import * # 可以将模块中所有名字全部取出 不推荐使用 你可能根本不知道哪些值可用 print(money) print(read1) print(read2) # 使用__all__时,可以指定py文件当做模块被导入时, # 限制导入者能拿到名字的个数