模块调用

import模块的调用

import md # 模块名是md.py但是导入的时候只需要写md,不能加上文件的后缀

相当于取运行了md.py文件中的代码,并且把指向md.py的名称空间放入执行文件的名称空间

 

一旦运行这个run.py文件,首先他会创建run.py的名称空间

首次导入模块(导入模块的三个阶段)(md.py)(**),

1:执行md.py文件

2:将运行md.py文件中的代码将产生的名字和值存放到md.py名称空间中

3:在执行文件中产生一个指向名称空间的名字(md)

 

多次导入不会再执行模块文件,会沿用第一次导入的成果(**)

多次的调用没什么意义,因为python已经知道你调用过了这个模块

python会判断执行文件的内存空间有没有这个被导入的名称空间,如果有,python就知道你已经导入过了

 

使用import导入模块 访问模块名称空间中的名字统一句势:模块名.名字

特点有:

1.指名道姓的访问模块中的名字 永远不会与执行文件中的名字冲突

2.你如果想访问模块中名字 必须用模块名.名字的方式

 

补充:

import 支持一行导入多个模块,但是不推荐使用,但是只要当几个模块有相同部分或者属于用一个模块,就可以这样写

当几个模块没有联系的情况下 应该分多次导入:

import os

import time

 

通常导入模块的句式会写在文件的开头

(有特例:特定函数中使用的模块,不调用函数就不执行模块,(为了节省内存空间))

 

如果模块名比较长可以使用as取一个别名

import time as t

 


from句式

from md1 import money   # from 模块名 import 要拿出的名字

# 多次导入不会执行,会沿用第一次导入的成果

# 执行了md1 的代码

 

首先会创建run1.py的名称空间

首次导入md1.py模块

1.运行md1.py

2.将产生的名字存放到md1.py名称空间中

3.直接拿到指向md1.py名称空间中某个值的名字

 

利用from.. import .. 句式。

1.访问模块中的名字不需要加模块名前缀

2.在访问模块中的名字可能回合访问当前的执行文件中的名字发生冲突(缺点)

 

补充:

from 模块名 import *

# 一次性把md1模块中的全部名字都拿出来(不推荐)

因为拿多了会比较占用内存

# 原理:查找模块中all中的东西:

如果all没写,默认是所有的东西,

如果写了,那么写几个就只能拿几个

 

* 之所以能把东西全部拿出来是

all = []

# 这个要放到最后面,不然名字还没定义

# 而且写在里面的名字都要加引号,变成字符串类型,用逗号隔开

all = ['read1','read2']

# 不写默认是里面所有的名字

 

 

 

 

 

 

 

 

posted @ 2019-07-17 08:32  Pscly  阅读(181)  评论(0编辑  收藏  举报