在前面的几个章节中我们脚本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。
为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。
模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。
1、sys模块 python 标准库中模块
import Python3函数 #同一个文件夹中的模块
#import test2_1 #不同文件夹的模块 导入失败 被导入模块必须在此模块之前(之上)的目录中
import importTest1 #文件夹上的模块
import sys
'''
1、import sys 引入 python 标准库中的 sys.py 模块;这是引入某一模块的方法。
2、sys.argv 是一个包含命令行参数的列表。
3、sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表。
'''
print(sys.argv) #程序外部向程序传递参数(列表) ps:当前脚本(模块)上的有所目录,脚本名称是列表的第一个参数
print(sys.path) #所有输入模块的目录名列表 ps:上述中导入模块,就在此列表中搜索对应的模块
print(dir(sys)) #查看sys中所有的可用方法
sys.path.append("E:\\test\\test2") #在sys.path中添加了搜索路径
import test2_1 #当在sys.path中添加了搜索路径,则同级的文件夹下的模块也能导入
2、import 语句
想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下:
import module1[, module2[,... moduleN]
当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。
搜索路径是一个解释器会先进行搜索的所有目录的列表
一个模块只会被导入一次,不管你执行了多少次import
print("---------------import语句----------------")
import importTest1 #导入importTest1模块
importTest1.fun1([10,15,-8],[7,24,-20]) #访问导入模块中带参数的函数
importTest1.fun2()
funS =importTest1.fun1 #如果常用导入模块中的函数,可赋值给本地的一个名称 ps:函数最后不要带括号
funS([10,15,-8],[7,24,-20])
3、from...import语句
Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中,语法如下:
from modname import name1[, name2[, ... nameN]]
print("---------------from...import语句----------------")
from importTest1 import printString
printString()
4、from...import * 语句
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
from modname import * # modname 导入的模块名称
这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。
可以一次性的把模块中的所有(函数,变量)名称都导入到当前模块的字符表
这将把所有的名字都导入进来,但是那些由单一下划线(_)开头的名字不在此例。大多数情况, Python程序员不使用这种方法,因为引入的其它来源的命名,很可能覆盖了已有的定义。(用*的方式导入,可能会覆盖该模块已定义的相同名称的函数或变量)
5、__name__属性
(_ _ 去掉空格的两个)
if __name__ == "__main__":
print("test2_1.py") #自身程序运行时输出
else:
print("调用test2_1.py") #被调用时输出
说明: 每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。
说明:__name__ 与 __main__ 底下是双下划线, _ _ 是这样去掉中间的那个空格。
6、dir() 函数
内置的函数 dir() 可以找到模块内定义的所有名称。以一个字符串列表的形式返回