• 模块和包


    一.模块

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

      

  • 相关阅读:
    数据库ACID
    tcp ip detatils
    process vs thread
    C++ virtual descructor
    static_cast dynamic_cast const_cast reinterpret_cast总结对比
    Meta Programming
    C++ traits
    c++内存管理
    洛谷 P4136 谁能赢呢?
    洛谷 P1166 打保龄球
  • 原文地址:https://www.cnblogs.com/itfenqing/p/10284353.html
Copyright © 2020-2023  润新知