# 文件就是一个模块,文件夹就是一个包
# 文件夹里面可以有很多文件,就相当于包中有好多的模块.
import 模块或者包(包是文件夹,模块是文件)
模块不会被重复导入,引入一次终生受益
‘‘‘
调用的时候:
模块.变量
import mymodule
print(mymodule.cat)
模块.函数
mymodule.jump()
模块.类
print(mymodule.Classroom().name)
‘‘‘
# import.引入并起别名 , as 后面写这个模块的别名
别名.变量
别名.函数
别名.类
from mymodule import cat as c , lookdoor as ld
print(c)
ld()
# import导模块的时候,会从sys.path提供的路径下去找,找不到就报错
# import sys
# print(sys.path)
# 导入单个成员
# from mymodule import dog # 导入dog变量
# print(dog)
# 可以导入所有
from module4 import *
print(dog)
pring(cat)
# 导入多个成员
# from mymodule import jump,lookdoor # 导入模块中的函数
# jump()
# lookdoor()
#返回模块名字的魔术属性 __name__
如果当前文件是直接运行的,返回"__main__"字符串
如果当前文件是间接导入的,返回当前文件名(模块名)
直接收入包中成员
# 如果想把包当成模块用,在创建一个__init__.py中进行定义
# 当引入一个包的时候,当前包下的__init__文件自动执行.
import导入某个包下的某个模块
import package1.module1
import导入某个包下的某个模块 用as起别名
# import package1.module1 as pm
# print(pm.girl)
# from package1.module2 import * #所有
# print(boy1)
# from package1.module2 import boy1 #单个
# print(boy1)
# from package1.module2 import boy1,lng21,Bf1 #多个
# lng21()
# 设置*号导入的范围, 在被导入的模块中写上 __all__ = ["cat"]
# from mymodule import *
# print(dog) # error
# print(cat) # 只能导入cat
# 4.__name__的使用
"""
#返回模块名字的魔术属性 __name__
如果当前文件是直接运行的,返回"__main__"字符串
如果当前文件是间接导入的,返回当前文件名(模块名)
"""
# res = __name__
# print(res,type(res))
分模块不能单独进行调用,统一由主文件main进行调用
模块之间的互相嵌套导入,使用相对路径实现
单入口文件必须和包在同一层级,包里面可以含有各种包和模块
# from . import pkg 相对于当前路径引入模块
# from .pko2 import ceshi204 相对于当前模块引入具体属性
# from .. import pkg2_module1 相对于上一级引入模块
# from ..pkg2_two import pkt1 相对于上一级的某个包引入模块
# from ..pkg2_two.pkt2 import ceshi209 相对于上一级某个包下的某个模块引入某属性
. 当前路径
.. 上一级路径
... 上一级的上一级
.... 上一级的上一级的上一级
..... (这里的点是无限的)
from .......................................... import 模块
原文:https://www.cnblogs.com/xo1990/p/14829435.html