18.模块导入

导入模块或包

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

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引入其他模块:
	需要绝对路径,从引入包同一级文件开始引入模块
"""
原文地址:https://www.cnblogs.com/jia-shu/p/14146623.html