day20.import

一、import引入

# import语句可以在程序中任意位置使用,为了防止重复导入模块,第一次导入后就将模块名加载到内存了,
# 后面的import语句仅仅对已经加载到内存的模块对象增加一次引用,不会重新执行模块内的语句
import time
# 只是第一次导入时才执行 time.py 代码,
import time
import time
import time

1、添加任意路径下的模块

把路径添加到系统环境变量path当中,
执行命令时,系统会自动按照路径找到模块,从而引入
如果找不到当前模块所在的路径,直接报错

将自定义绝对路径添加至sys.path中:

二、from ... import ...

from time import thread_time

三、from ...  import *

# 把time中所有的不是以下划线开头的名字都导入到当前.py文件
from time import  *

四、为模块起别名

import time as T
print(T.time())

五、__all__ 可以设置导入的范围

__all__ = ["leader","staff"]
leader = "Lsir"
staff = "Zsir"
def task1():
    taskone="{} asked {} to type a document".format(leader,staff)
    print(taskone)
def task2():
    tasktwo="{} asked {} to implement a functional module".format(leader,staff)
    print(tasktwo)
class MyClass():
    name = "yuemo"
import sys
sys.path.append("/Users/atsukokoshi/Desktop")
from Ctmmodule import *
print(leader)
task1()
# 报错:task1 未定义

六、魔术属性的使用

# 如果当前文件是直接运行的,返回__main__
# 如果当前文件是间接导入的,返回当前文件名(模块名)
# 文件直接被执行的时候返回__main__

# 当成模块被导入的时候,返回模块名本身;

七、包

# 1.文件就是模块,文件夹就是包
# 2.__init__.py 对包(文件夹)进行初始化的脚本文件
    # 导入包的时候,系统自动调用__init__.py文件,把init文件里面成员进行导入
# 3.可以通过__init__间接导入其他模块
__all__ = ["ceshi301"]


ceshi301 = 301
ceshi302 = 302

# 通过初始化__init__文件间接导入
from package1 import mypath
目录package1
def join():
    print("我是join函数")
    
def getsize():
    print("我是getsize函数")
mypath.py
import package1
print(package1.ceshi301)
# """
# 2.导入包下的某些模块
# 方法一
"""
import package1.mypath
package1.mypath.join()
"""
# 方法二(模拟os.path.join写法)
"""
import package1
package1.mypath.join()
package1.mypath.getsize()
"""


# from ... import 从包导入相应成员
from package1 import ceshi301
print(ceshi301)
# 从包当中导入模块
from package1 import mypath
mypath.join()
# 引入包下的模块下的具体成员
from package1.mypath import getsize
getsize()
# 在引入的同时,起别名
from package1.mypath import getsize as gs , join as j
gs()
j()

八、单入口模式

# 分模块不能单独进行调用,统一由主文件main进行调用
# 模块之间的互相嵌套导入,使用相对路径实现
# 单入口文件必须和包在同一层级,包里面可以含有各种包和文件

# 相对路径导入的落脚点在:模块或其中的具体成员身上

目录结构为:

ceshi1000 = 1000
ceshi1001 = 1001
from . import pgone_2
print(pgone_2.ceshi2001)
pgond1.py

报错信息:

from package2.pkg1 import pgone_1
main.py

1、main文件作文主文件,通过相对路径调用各包和模块

# . 代表当前
from . import pgone_2
print(pgone_2.ceshi2001)

# ceshi2000
from .pgone_2 import ceshi2000
print(ceshi2000)

# .. 上一级
from .. import pkg2_module1
print(pkg2_module1.ceshi3000)

from ..pkg2_module1 import ceshi3001
print(ceshi3001)

from ..pkg2 import pgtwo_2
print(pgtwo_2.ceshi4000)

from ..pkg2.pgtwo_2 import ceshi4001
print(pgtwo_2.ceshi4001)
"""
"""
.    当前路径
..   上一级路径
...  上一级的上一级
.... 上一级的上一级的上一级
.....   (这里的点是无限的)
from .......................................... import 模块
. 代表当前 .. 上一级
原文地址:https://www.cnblogs.com/kongxiangqun/p/13419727.html