Python自带了一些有用的模块,在安装Python会自动安装,也可以通过pip的形式安装第三方的优秀模块。
自定义包
Python中,模块的集合为包
包组成
$ ls
PyClass/ Pymain.py
$ ls PyClass/
EnumClass.py
TestClass.py
__init__.py
模块为一个文件夹包含的内部Python文件,用__init__.py为该模块的初始化文件
Pymain.py
#模块包含
from PyClass import EnumClass
from PyClass import TestClass
from PyClass.TestClass import CTest
print(EnumClass.__author__)
print(TestClass.__author__)
#引用模块中的函数
EnumClass.EnumFunc()
TestClass.ClassFunc()
#引用模块中的类
Test = CTest("Test",5)
Test.show()
init.py
#模块包含的文件
__all__ = ["TestClass","EnumClass"]
EnumClass.py
from enum import Enum
#模块作者名
__author__ = "Python Enum Modle"
def EnumFunc():
enumType = Enum("Python",("ONE", "TWO", "THREE"))
#获取枚举值
print(enumType)
print(enumType.ONE)
print(enumType['TWO'])
print(enumType(3))
#模块测试
if __name__=='__main__':
EnumFunc()
TestClass.py
#模块作者名
__author__ = "Python Class Modle"
class CTest(object):
def __init__(self,name = "Python",num = 3):
self.__name = name
self.num = num
def show(self):
print("name:",self.__name,"num:",self.num)
def ClassFunc():
Test = CTest()
Test.show()
#模块测试
if __name__== '__main__':
ClassFunc()
执行结果
$ python Pymain.py
Python Enum Modle
Python Class Modle
<enum 'Python'>
Python.ONE
Python.TWO
Python.THREE
name: Python num: 3
name: Test num: 5
引用包内的所有模块
from PyClass import *
EnumClass.EnumFunc()
不建议这种使用方式,无法把握包含的模块名是否冲突
自定义模块
引用自定义的Python模块,供其他Python调用。模块的搜索地址一般以当前模块所在的地址搜索,当前地址没有就在系统指定的地址搜索,
系统地址:
import sys
print(list(sys.path))
执行结果
['C:\\Program Files\\Python37\\python37.zip', 'C:\\Program Files\\Python37\\DLLs', 'C:\\Program Files\\Python37\\lib', 'C:\\Program Files\\Python37'