import导入模块或包

# 文件就是一个模块,文件夹就是一个包
# 文件夹里面可以有很多文件,就相当于包中有好多的模块.

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 .. import .. 从哪里导入什么什么东西

# 导入单个成员
# 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 .. import .. 从哪个包下的哪个模块 具体的导入什么东西

# 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 模块

 

posted @ 2021-06-04 10:37  urls  阅读(202)  评论(0编辑  收藏  举报