python模块的导入详解

一:一个小问题:什么是模块?

我的理解是:有通用功能的文件的集

二:为什么要使用模块?

我们通常为了使自己以前写的东西保存下来,会把东西写入文件中保存下来,必要时我们把这些文件当脚本去执行,也可以把他们当做模块导入其他的模块中,实现了功能的存放利用。

三:怎样导入自己的模块?

自定义demo模块:

print(‘in demo.py‘)money=100def read():    print(‘in read‘,money)print(__name__)
‘‘‘import demodef read():    print(‘lxx‘)money=200demo.read()print(demo.money)过程:1.找到模块  2.(先从sys.modules(字典)里查看是否已经导入了模块,如果没有被导入,就依据sys.path路径寻找模块,找到了就导入)创建这个模块的命名空间  3.把文件中的名字都放到命名空间里import sysprint(sys.modules.keys())#首先看看模块在不在‘‘‘
关于模块的各个方法:
# import time as tt  #给模块起别名 重命名之后之前的名字不能用了# print(tt.time())from time import sleep   #单独从某个模块中导入一个方法或者是变量# from demo import read# read()# from demo import *  #能导入全部的东西# # print(money)# # read()# # read2()# from math import pi  #pi特定的:圆周率# print(pi)# pi=234# print(pi)#结果:# 3.141592653589793# 234
五:把模块当做脚本执行:我们可以通过模块的全局变量__name__来查看模块名  自己写的文件 demo  __name__  得到的是:main    但当你导入这个模块的时候 __name__  得到的就是demo名字    所以 这个方法可以:当我们想要一个方法是现在自己写的文件上,但不希望他使用在被导入的模块中的时候。六:导入模块是要注意的地方:1.所有模块导入应尽量往上写。2.导入循序最好是:内置模块--》扩展模块--》自定义模块3.检查模块不会重复被导入:sys.moudles4.从哪导入模块:sys.path5.from 模块名 import * 和 _all_ 是一对,没有这个变量就会导入所有的,如果有all就只导入all列表中的。
 

相关推荐