什么是包?

为了组织好模块,会将多个模块分为包。Python 处理包也是相当方便的。简单来说,包就是文件夹,但该文件夹下必须存在 __init__.py 文件。
最简单的情况下,只需要一个空的 __init__.py 文件即可。当然它也可以执行包的初始化代码,包底下也能包含包,这和文件夹一样,还是比较好理解的。

新建pack01和pack02包
在pack01的__init__.py中写入

print("1号先生")
from pack01.MyTime import timeit

新建MyTime.py文件,写入

import functools
import time
import random
import string

money=1000
def timeit(fun):
    @functools.wraps(fun)
    #可以保留被装饰函数的函数名和帮助文档信息
    def wrapper(*args,**wargs): #*args,**wargs接收可变参数和关键字参数  #函数执行前后记时
        """
        这是wrapper函数内容
        """
        start_time = time.time()
        res = fun(*args,**wargs)      #对元组和字典进行解包
        end_time = time.time()
        print('运行时间是%.6f' %(end_time-start_time))
        return res

    return wrapper

@timeit
def hello():
    return 'hello'

#判断模块是否被导入,如果没有被导入,则执行以下代码

if __name__ == '__main__':
    print(hello())
    print(__name__)

#__all__用来控制from xxx import *的导入内容
__all__=['hello','timeit','money']    #定义 __all__ 变量,该变量为一列表

在pack02的__init__.py中写入

print("2号先生")
from pack02 import login_logout

新建 login_logout.py文件,写入

导入包

当import导入包时,实质是执行包里面的__init__.py文件

#第一种from pack01.MyTime import timeit
#调用命令:@pack01.MyTime.timeit

#第二种 在__init__.py文件写入:from pack01.MyTime import timeit
#from pack01.MyTime import timeit
#调用命令@timeit
from pack01.MyTime import timeit
@timeit
def fun(x,y):
    return x+y

print(fun(1,2))

from pack02.login_logout import login
print(login())

图片描述


SheenStar
168 声望26 粉丝

祝你坚强