模块和包
一.模块
1.一个.py文件就是一个模块
2.导入模块:
(1).同目录下
from py文件名 import 类/函数
(2).不同目录下
from 目录名.py文件名 import 类/函数
3.示例程序:
文件结构:
|-sub |-class_test.py |-test.py
class_test.py
class Dog: def say_hello(self): print('hello world') @staticmethod def say(): print('hello')
test.py
if __name__ == '__main__': dog = Dog() dog.say_hello() Dog.say()
二.包
1.一个目录,且目录中包含__init__.py文件,则称之为包
2.包内引用模块:
from module import class/function
外部引用包:
from 包名.module import class/function
3.如果需要模糊导入,则需要在__init__.py中定义__all__ = ['模块1', '模块2', ....]
外部则可以模糊导入:
from 包名.module import *
4.示例程序
文件结构:
|-package_a |-__init__.py |-handle.py |-log.py |-data.py
log.py:
def log(fun): def wrapper(*args, **kwargs): print('call: %s' % fun.__name__) return fun(*args, **kwargs ) return wrapper
handle.py:
@log def add(x, y): return x + y if __name__ == '__main__': print(add(1,2))
__init__.py:
__all__ = ['handle', 'log']
data.py
from package_a import * print(handle.add(10, 20))