导入模块或包
#文件就是一个模块,文件夹就是一个包
#文件夹里面可以有很多文件,就相当于包中有好多的模块.
import 模块或者包(包是文件夹,模块是文件)
模块不会被重复导入,引入一次终生受益
1.导入模块
# 1.import 引入模块
"""
import ...as..改名
调用:
模块.变量
模块.函数
模块.类
"""
import module as jia #从文件夹引入模块
print(jia.name) #贾英贺
jia.func() #我是好人
# 2.导入任意文件下的模块
import sys
"""
import导模块的时候,会从sys.path提供的路径下去找,找不到就报错
可以把要导入模块的路径添加到sys.path路径里
sys.path.append(r文件路径) r防止转义
"""
# 3.from ...import ... 从哪里导入..(变量,函数,类,模块)
"""
调用 : 直接调用,不需要再 . 了
"""
# 导入单个成员
from module import name
print(name)
# 导入多个成员
from module import name,func
func()
# 导入所有成员(*)
"""
在被调用文件中,可以用魔术方法__all__=[]限制导入所有*
列表成员: ["变量名","函数名","类名"]
"""
from module import *
# 4.返回模块名字的魔术属性 : __name__
"""
如果当前文件是直接运行的,返回"__main__"字符串
如果当前文件是间接导入的,返回当前文件名
作用:
防止其他文件引入测试代码
module文件下测试代码
if __name__=="__main__":
print(name)
func()
"""
print(__name__) #__main__
2.导入包
# 1.单入口模式:只通过主文件来调用分模块内容,分模块不单独执行
"""
单入口文件必须和包在同一层级,包里面可以含有各种包和模块
分模块不能单独进行调用,统一由主文件main进行调用
模块之间的互相嵌套导入,使用相对路径实现
"""
import package2.pkg_one.pkgone_1 as pp
#在pkgone_1文件下,可以使用相对路径导入(模块或模块中的具体成员)
"""
相对路径:
. 当前路径
.. 上一级路径
... 上一级的上一级
..... (这里的点是无限的)
引入模块:
from . import pkg 相对于当前路径引入模块
from .pko2 import ceshi204 相对于当前模块引入具体属性
from .. import pkg2_module1 相对于上一级引入模块
from ..pkg2_two import pkt1 相对于上一级的某个包引入模
"""
# 2.导入包 import
"""
文件=>模块 文件夹=>包
当import 文件夹时,会自动调用__init__.py初始化文件;
可以通过初始化文件__init__.py引入其他模块:
需要绝对路径,从引入包同一级文件开始引入模块
"""