什么是包?
为了组织好模块,会将多个模块分为包。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())
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。