Python(13)---模块和包

一、模块介绍

'''
什么是模块?
    模块就是已经写好的python代码文件,文件中的函数,类,变量都可以使用
    python中的模块和java中的包很类似
引入模块:
    import random
    import os
使用模块的好处?
    直接使用已经实现好的功能
模块的制作:
    制作一个模块其实就是定义一个python代码文件
    注意:模块名的定义要遵循标识符的规则
    模块中可以定义变量,定义函数,定义类
'''
# 定义一个模块
num = 1

def func():
    print('module01 func execute!')

class Dog(object):
    @staticmethod
    def show():
        print('Dog class')

二、模块导入

'''
    要使用模块中的内容,必须先导入模块
'''
'''
方法一:
    import 模块名
    使用:模块名.功能名
'''
import Module01
# 1
print(Module01.num)
# module01 func execute!
Module01.func()
# 创建对象
dog = Module01.Dog()
# Dog class
dog.show()
# 使用类名直接访问
# Dog class
Module01.Dog.show()
'''
方法二:
    from 模块名 import 功能名1,功能名2,...
    使用:功能名
    注意:当多次import时,若存在同名的方法名,则下面的会覆盖上面的
'''
from Module01 import num,func
# module01 func execute!
func()
# 1
print(num)
'''
方法三:
    from 模块名 import *
    将模块中的所有功能导入
    使用:功能名
'''
from Module01 import *
'''
as关键字
    使用as可以对模块和功能起别名,但起别名之后就不能再使用原来的名称了
'''
import Module01 as mod
from Module01 import func as fun
# 1
print(mod.num)
# module01 func execute!
fun()

三、__all__变量

定义了__all__的模块

__all__ = ('num','func')
num = 1

def func():
    print('module02 func execute!')

class Dog(object):
    @staticmethod
    def show():
        print('Dog class')

引入上面的模块

'''
__all__变量
    __all__变量可以在每个模块中定义,数据类型是元组或列表
__all__变量的作用
    影响from 模块名 import * 的导入行为,另两种导入方式不受影响
    如果没有定义__all__变量,模块中的所有功能都会被导入
    如果定义了__all__变量,只导入变量中定义了的内容
'''
from Module02 import *
# 1
print(num)
# module02 func execute!
func()

四、__name__变量

def add(a,b):
    print(a + b)

if __name__ == '__main__':
    # 30
    add(10,20)
    '''
        __name__变量是每个模块中都有的,是系统自己定义的
        直接运行当前代码,值为:__main__
        把文件作为模块导入时运行,结果为Module03(文件名)
    '''
    # __main__
    print(__name__)
import Module03
# 300
Module03.add(100,200)

五、模块注意点

# 自定义的模块名不要和系统的模块名重复
import random
import sys

# 模块的搜索顺序:当前目录--->系统目录---->若找不到则程序报错
# 可以使用sys.path查看模块的查找顺序
print(sys.path)
a = random.randint(1,5)
print(a)

六、包

'''
包:
    将功能相近或相似的模块放在一个目录中,并在目录中定义一个__init__.py文件,这个目录就是包
'''
'''
包的导入:
    方法一:
        import 包名.模块名
'''
import json.decoder
'''
    方法二:
        from 包名.模块名 import 功能名
'''
from json.tool import main
main()
'''
方法三:
    from 包名 import *
    导入的是__init__.py中的内容
'''
from json import *

猜你喜欢

转载自blog.csdn.net/weixin_46841376/article/details/115417044