模块和包

一.模块

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))

  

 

posted @ 2019-01-17 20:19  rorshach  阅读(143)  评论(0编辑  收藏  举报