import的用法
import的作用
import语句用来导入其他的Python文件(简称模块module),使用该模块里定义的类、方法或者变量,从而达到代码复用的目的
作用一
建立文件架构:
如上图,建立一个test的工作目录,并在其内建立两个文件m1.py和m2.py,在m1.py写入代码:
在m1.py中键入代码:
'''
import后面直接接模块名
'''
import os
#第一个是sys.path(通过运行代码import sys;print(sys.paht)查看)
#OS所在的目录在列表sys.path中,一般安装在python库的目录都可以在sys.path中找到
#所以对于安装好饿库我们直接使用import即可
import m2
#运行文件(这里是m1.py)所在的目录,因为m2.py和运行文件在同一目录下,所以上述写法没有问题
m2.printSeqlf()
在m2.py中键入代码:
def printSeqlf():
print(" In m2")
运行结果如下:
说明:用上述的方法导入原有的sys.path是没有问题的,但是,最好不要使用上述方法导入同目录下的文件!因为这可能会出错!
作用二
在test目录下新建一个目录Branch,在Branch中新建文件m3.py
如下图所示:
在m3中键入代码:
import m4
def printSelf():
print("In m3")
通过以下代码在m1中导入m3.py。m1中的代码如下:
from Branch import m3
#from package_name import imort module_name。
#一般吧模块组成的几何称为包(package)。
m3.printSelf()
为了测试作用一在同一子目录下m3.py能否调用同一子目录下的m4.py,如上图所示在branch目录中建立了m4.py:
代码如下:
def printa():
print("In 4")
我们在m3.py中调用m4.py
调用的代码如下:
import m4
会报以下错误:
错误原因:
根据导入流程可知:
m1使用的from Branch import m3导入m3,然后m3.py中import 4导入m4,这边可知:m4.py和m1.py不在同一个目录下,不能直接使用import m4导入m4。
绝对导入与相对导入
python2中运行m1.py不会报错,因为python2中,上面提到的import的两种写法属于相对导入,而在python3中,却属于绝对导入,import中最关键的部分是相对导入和绝对导入!
对于sys.path中的包,这种写法不存在问题;导入自己写的文件,如果是非运行入口文件(上面的m1.py是运行入口文件,可以使用绝对导入),则需要相对导入。
如:上面中非运行入m3.py,导入m4.py使用相对导入:
from .import m4
此时运行m1.py是OK的。相对导入的写法:
from. import module_name:导入和自己同目录下的模块
from.package_name import module_name:导入和自己同目录的包的模块
from …import module_name:导入上级目录的模块
from …package_name import module_name:导入位于上级目录下的包的模块
每多一个点多往上一层目录
import的其他用法
①:import module_name as alias:某些的module_name名字较长,之后写它比较麻烦,或者module_name会出现名字冲突,可以使用as进行改名:import numpy as np
②:from module_name import function_name,variable_name,class_name,上面导入的整个模块,有时候我们只想使用模块中的某些函数、某些类。使用逗号,可以导入模块中的多个元素。